继承,可以对共性抽取,完成代码简化
1.类与对象的层面
一个父类,可以有多个子类
而一个子类可以有多级父类,只能有一个直接父类
所有对象均继承自 Object 类,即 java.lang.Object
1.子类声明中使用 extends 关键字
class A{ //父类
public A(int a){
System.out.println("A的构造方法");
}
String name = "A";
String age = "age";
public void say() {
System.out.println("I am A class");
}
public void call() {
System.out.println("A call");
}
}
class B extends A{ //子类
public B() {
super(10);
System.out.println("B的构造方法");
}
String name = "B";
public void haha() {
System.out.println("haha");
}
@Override
public void call() {
System.out.println("B call");
}
}
2.子类可以当作父类使用
A a = new B();
2.成员变量
子类继承父类的成员变量
1.成员同名变量使用规则:优先使用本类,没有则向上找
B b = new B();
System.out.println(b.name); //B
System.out.println(b.age); //age
2.子类中,局部变量,成员变量,与父类成员变量的调用
局部变量名:变量名;
成员变量名:this.成员变量名;
父类成员变量名:super.成员变量名;
3.成员方法
子类继承父类的成员方法
1.成员变量同名规则:优先使用本类,没有则向上找
B b = new B();
b.haha(); //haha
b.call(); //A call
2.子类中,成员方法,与父类成员方法的调用
成员方法:方法名
父类成员方法:super.成员方法名;
3.子类同名成员方法,使用 Override 注解检测
该注解,仅起到检测作用,不写该注解,子类代码正常时也能运行
@Override
public void call() {
System.out.println("B call");
}
4.构造方法
1.子类创建时,必须先调用父类的构造方法,再调用子类构造
2.子类的构造方法不写时,默认赠送 super();
3.如果父类没有无参构造,无法赠送 super();
4.第3种情况下,子类构造的第一行语句,必须写 super(参数);
(该语句只能在子类构造中的第一句调用,其他地方均无法调用)