继承性
格式: class A extend B{}
A继承B后,A就获得了B中所有的属性和方法,B私有的方法A也能获得,但因为封装,所以无法直接调用,(用set,get方法)。继承后,A也可以有特有的方法。
重写:
继承后,子类可以重写父类中的方法(同名同参)可以说是一种覆盖;(相当于不改名,但是改里面的内容)
注意:子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符;
返回值类型:如果父类返回值是void,name子类也只能是void;
如果父类返回值是A类型,则重写方法返回值只能是A或A的子类;
如果父类是基本返回值类型,重写方法必须相同
方法重写是覆盖
属性父与子写一样的不覆盖
super
可以理解为:父类的;
如果想在子类中调用与父类同名的父类的属性,必须加super.属性
如果想在子类中调用被重写的方法(重写之前的方法),则需要加super.方法
super也可以调用构造器:
我们可以在子类构造器中使用super(形参列表)的方式调用父类指定的构造器;
其中super(形参列表)必须声明在子类构造器的首行。
this和super只能二选一,要么调用父类构造器
如果构造器中没有任何声明。则系统自动声明super()(开局报错可能是父类没有空形参的构造器)
在多个构造器中至少有一个super调用了父类的构造器;
多态性
多态性是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为。(转载)
多态性的使用:虚拟方法调用
编译时看父类,运行时运行子类重写的东西;
多态的适用前提,是继承和重写;
多态只适用于方法,不适用于属性!
重载:在调用方法之前,系统就已经确定调用谁的方法(静态绑定)
多态:只有在执行的时候才能确定具体调用哪的方法(动态绑定)
理解向下转型和向上转型
向上转型:多态
引:在使用多态性以后,怎样调用子类特有的属性和方法?
答:向下转型:强转;
向下转型:强转
例:父类person是man 和woman的子类。
person p1= new man();
如果man p2= new man();
p2=(man)p1;是可以的
但是如果
woman p2=new woman();
p2 =(woman)p1;是错的
编译对,运行错。
无论调用woman还是man中的特有方法都不成功。
未解决这样的问题,使用instanceof关键字判断
a instanceof A判断对象a是否是A类的实例。是返回ture否则返回false。A处可以放A类和A的父类