面向对象三大特性之多态
2018-08-01 本文已影响0人
逆风的妞妞
多态(对象的多种形态)
继承是多态实现的基础
1.引用多态
父类的引用可以指向本类的对象 Animal obj1 = new Animal();
父类的引用可以指向子类的对象 Animal obj2 = new Dog();\
子类的引用指向父类是不允许的。eg:Dog obj3 = new Animal();//错误
2.方法多态
创建本类对象时,调用的方法是本类方法;
创建子类对象时,调用的方法是子类重写的方法或者继承的方法;
多态中的引用类型转换
1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换,无风险。
2.向下类型转换(强制类型转换),是大类型到小类型,有可能溢出。
3.instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题。
eg:Dog dog2 = (Dog)animal;//强制转换
if(animal instanceof Dog){
Dog dog2 = (Dog)animal;
}else{
}
java中抽象类
1.语法定义
抽象类前使用abstract关键字修饰,则该类为抽象类。
应用场景:
1.在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。抽象类是约束子类必须有哪些方法,并不关注子类是如何去实现。
2.从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。
作用:不关注子类实现,但必须约束子类必须有哪些特征。
语法规则:
1.abstract定义抽象类
2.abstract定义抽象类方法,只有声明,不需要实现
3.包含抽象方法的类是抽象类。
4.抽象类中可以包含普通的方法,也可以没有抽象方法
5.抽象类不能直接创建,可以定义引用变量