Java的继承

什么是权限修饰符

就是用来限制类中的成员 (成员变量、成员方法、构造器) 能够被访问的范围。

本类 修饰符 同一个包中的类 子孙类 任意类
private
默认
protected
public
private < 默认 < protected< public

Java 中的类是什么继承模式?

Java 是单继承的:一个类只能继承一个直接父类。

Java 中的类可以多继承吗?Java 中的祖宗类是啥?

不可以,但是可以多层继承。
Object 类是 Java 中所有类的祖宗。

在子类方法中访问成员 (成员变量、成员方法) 是什么特点?

就近原则,子类没有找子类、子类没有找父类、父类没有就报错借!

如果子父类中出现了重名的成员此时一定要在子类中使用父类的怎么办?

super. 父类成员变量 / 父类成员方法

方法重写

  • 当子类觉得父类中的某个方法不好用,或者无法满足自己的需求时,子类可以重写一个方法名称、参数列表一样的方法,去覆盖父类的这个方法,这就是方法重写。
  • 重写小技巧:使用 Override 注解,他可以指定 java 编译器,检查我们方法重写的格式是否正确,代码可读性也会更好。

方法重写的其它注意事项

  • 子类重写父类方法时,访问权限必须大于或者等于父类该方法的权限 (public>protected > 缺省)。
  • 重写的方法返回值类型,必须与被重写方法的返回值类型一样或者范围更小。
  • 私有方法、静态方法不能被重写,如果重写会报错的。

子类构造器的特点

  • 子类的全部构造器,都会先调用父类的构造器,再执行自己。

子类构造器是如何实现调用父类构造器的:

  • 默认情况下,子类全部构造器的第一行代码都是 super ()(写不写都有), 它会调用父类的无参数构造器。
  • 如果父类没有无参数构造器,则我们必须在子类构造器的第一行手写 super (….), 指定去调用父类的有参数构造器。

super (…) 调用父类有参数构造器的常见应用场景是什么?

为对象中包含父类这部分的成员变量进行赋值。

补充知识:this (…) 调用兄弟构造器

任意类的构造器中,是可以通过 this (…) 去调用该类的其他构造器的。

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Student{	
private String schoolName;
private String name;

public Student (String name){
this (name,"woodfish");
}

public Student (String name , string schoolName ){
this.name = name;
this.schoolName = schoolName;
}
}

this (…) 和 super (…) 使用时的注意事项:

this (…)、super (…) 都只能放在构造器的第一行,因此,有了 this (…) 就不能写 super (…) 了,反之亦然。