一,多态
(1)多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,在赋值后,父类型的引用可以根据赋给他的值让子类对象的特性以不同形式的执行。
(2)实现多态的两种方式:
使用父类作为方法的形参
使用父类作为方法的返回值
注:方法重写是实现多态的根本。
二,抽象
抽象方法是不需要具体实现的。
关建词: abstract
声明一个抽象类————public abstract class Pet{}
父类创建一个抽象方法————public abstract void toPlay();
子类必须实现父类的抽象方法————public void toPlay(){} 注:除了子类也是抽象类则不用实现
抽象方法的规则:
抽象方法没有方法体
抽象方法必须在抽象类里
抽象方法必须在子类中被实现,除非子类也是抽象类
三,向上,向下转型
向上转型:父类的引用指向子类对象,自动进行类型转换
形式: <父类类名><引用变量名>=new <子类类名>();——————Pet pet =new Dog();
注:(1)此时通过父类引用变量调用得方法是子类覆盖或继承父类的方法,不是父类的方法
(2)此时通过父类的引用变量无法调用子类特有的方法
向下转型:将一个指向子类对象的父类引用赋给一个子类的引用,即:父类类型转换为子类类型。需强制类型转换。
形式: <子类类名><引用变量名>= (<子类类名>)<父类的引用变量名>;——————Dog dog =(Dog)pet ;
注:在向下转型时,如果没有转换位真实子类类型,会出现类型转换异常
如何减少类型转换异常?
关键词:instanceof 运算符来进行类型的判断
注:使用instanceof时,对象的类型必须和instanceof后面的参数所指定的类在继承上有上下级关系
如:if(pet instanceof Dog){Dog dog =(Dog)pet ;} ——————只有符合是继承上下级关系,才进行向下类型转换;
四,Object类
Object类是每一个子类的间接父类,所有对象都实现Object类的方法。
Object类被子类经常重写的方法:
(1)toString() :返回当前对象本身的有关信息,按字符串对象返回
(2)equals() :比较两个对象是否是同一个对象,是则返回true
(3)hashcode() :返回该对象的哈希代码值
(4)getClass() :获取当前对象所属的类信息,返回Class对象