Java(类的继承)
1.继承
-
extends的意思是”扩展“。子类是父类的扩展,使用关键字extends来表示。
-
Java里,一个类只能继承一个父类。
-
继承是类与类之间的一种关系,此外还有依赖、组合、聚合等。
public class Student extends Person{ /*Person extends Object*/ ... }
-
子类继承了父类,就会拥有父类的全部方法,而private私有属性及方法无法继承。
-
在Java中,所有类,都默认直接或间接继承Object类 (Ctrl+H 可以查看类关系)
-
被final修饰的类,无法被继承(断子绝孙)。
super & this
- super()调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或构造方法中
- super()和this()不能同时调用构造方法,因为this也必须写在第一行
-
super与this的区别:super代表父类对象的引用,只能在继承条件下使用;this调用自身对象,没有继承也可以使用。
super(); //隐藏代码,默认调用了父类的无参构造,要写只能写第一行
方法的重写
-
重写:子类的方法必须与父类方法必须一致,方法体不同。
-
重写是方法的重写,与属性无关
-
重写方法只与非静态方法有关,与静态方法无关(静态方法不能被重写)
-
静态方法属于类,非静态方法属于对象
public class B { public static void test(){ //静态方法 System.out.println("B==>test()"); } }
public class A extends B{ //继承 public static void test(){ System.out.println("A==>test()"); } }
public class Application { public static void main(String[] args) { //方法的调用之和左边定义的类型有关 A a = new A(); a.test(); //打印 A==>test() //父类的引用指向了子类,但静态方法没有被重写 B b = new A(); b.test(); //打印 B==>test() } }
- 方法名、参数列表必须相同
- 修饰符范围可以扩大,不能缩小(public>protect>private)
- 抛出的异常 范围可以被缩小,不能扩大
- 被static(属于类,不属于实例),final(常量方法),private(私有)修饰的方法不能重写