Java:语法速通

2023-12-20 15:20:33

参考

菜鸟教程 java

继承

class 父类 {
}
 
class 子类 extends 父类 {
}

在这里插入图片描述
继承的特性:

  • 子类拥有父类非private的属性和方法
  • 子类可以对父类进行扩展
  • 子类可以重写父类的方法
  • 使用extends只能单继承,使用implements可以变相的多继承,即一个类继承多个接口,如下。
public interface A {
    public void eat();
    public void sleep();
}
 
public interface B {
    public void show();
}
 
public class C implements A,B {
}
  • 通过super关键字引用当前对象的父类,通过this关键字引用自身。
class Animal {
  void eat() {
    System.out.println("animal : eat");
  }
}
 
class Dog extends Animal {
  void eat() {
    System.out.println("dog : eat");
  }
  void eatTest() {
    this.eat();   // this 调用自己的方法
    super.eat();  // super 调用父类方法
  }
}
 
public class Test {
  public static void main(String[] args) {
    Animal a = new Animal();
    a.eat();
    Dog d = new Dog();
    d.eatTest();
  }
}
  • 使用final关键字修饰的类不能被继承,但类内的属性和方法不是final的。使用final关键字修饰的方法不能被子类重写。
  • 子类不继承父类的构造器,只是调用,实例化子类对象时,先调用父类的构造器。若父类构造器有参,则子类构造器中需显式使用super调用父类构造器,若父类构造器无参,则系统自动调用。
/**
 * @author wuming
 * @date 2023-12-20 13:48
 * @description
 */

class SuperClass{
    private int n;
    SuperClass(){
        System.out.println("SuperClass 无参构造");
    }
    SuperClass(int n){
        System.out.println("SuperClass 有参构造" + n);
        this.n = n;
    }
}

class SubClass extends SuperClass{
    private int n;
    // 系统自动调用父类的无参构造函数
    SubClass(){
        System.out.println("SubClass 隐式调用父类无参构造");
    }
    SubClass(int n){
        super(n);
        System.out.println("SubClass 显式调用父类有参构造");
        this.n = n;
    }
}

public class ExtendTest {
    public static void main (String args[]){
        new SubClass();
        new SubClass(200);
    }
}

SuperClass 无参构造
SubClass 隐式调用父类无参构造
SuperClass 有参构造200
SubClass 显式调用父类有参构造

文章来源:https://blog.csdn.net/weixin_43249758/article/details/135105681
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。