关于java类继承特性的一些认识

来源:互联网 发布:蜘蛛爬行软件 编辑:程序博客网 时间:2024/05/29 10:20

1. 首先,java类继承的类即父类可以是抽象类也可以是非抽象类,抽象类里可以有类属性,也可以有方法,但方法至少有一个是抽象方法。

2. 子类不必实现父类的所有方法,子类实现了父类的所有抽象方法,才不会是抽象类,否则子类仍然是抽象类,是不能实例化的。

3. 子类会继承所有的父类属性,也可以自己增加新的属性,也可以在构造方法或普通方法里修改父类的属性。

4. 继承的一大目的就是要利用多态,可能很多个类都继承一个相同的父类,这时候在传参数的时候是很方便的,可以在实例化子类的时候,把引用赋给父类的变量,这样传不同类型的子类时就可以在方法里写死,写父类的变量类型,然后调用不同父类的相同方法,实际上调用的是不同子类的分别的相同的函数名的方法,这就是多态。

5. 应用多态特性时,如果子类的某些方法没有在父类中定义,是不能直接用父类的变量直接调用到子类的这些方法的,反之,某些父类的方法没有子类没有实现覆盖,则该子类的实例仍然可以调用这些父类方法,因为父类的所有方法都会被子类继承。、

6. 当子类的实例被赋值给父类的变量,用java反射机制对该父类变量调用getClass()方法时,得到的Class类型是子类类型,而不是父类类型,当然该子类类型是继承父类类型的,可以用代码表述为:

Class A {

public add() {

……

}

public minus() {

……

}

……

}

Class B extends A {

@Override

public add() {

……

}

public multiply() {

……

}

……

}

A a = new B();

a.add(); //可以执行,调用的是B实例的add方法。

a.multiply(); //编译不通过

a.minus(); //可以执行

Class<? extends A> clazzB= a.getClass();