java基础10(Javaoo5)——多态与抽象

来源:互联网 发布:求最小公倍数的vb算法 编辑:程序博客网 时间:2024/06/07 07:19
java基础10(Javaoo5)——多态与抽象


一 多态


1 概念


相同的行为不同的实现


2 分类


静态多态:编译时,系统就能决定调用哪个方法
动态多态:运行系统中才能动态确定方法所指的对象


3多态实现


静态多态:使用重载实现
动态多态:使用动态绑定和重写实现


***知识点回顾(重点)


基础数据类型的转换:
(当运算符两边的数据类型不同时,会发生数据类型转换)
double d = 10;//自动类型转换(int类型转double类型,int所表示的范围没有


double大,所以属于小转大,自动转换,不会损失精度)
(大的变量 = 小的值)
int i = (int)3.14;//强制类型转换(double类型转int类型,double所表示的范


围比int大,所以属于大转小,强制转换,会损失精度)
(小的变量 = 大的值)


引用数据类型的转换:


类名 变量 = new 类名();//创建对象
引用数据类型的转换只能发生在有继承关系的类身上
父类 变量 = 子类对象 // 父类表示范围比子类表示范围大,大的变量 = 小的值


,自动转换,无风险,向上转型!
子类 变量 = (子类) 父类对象 // 子类表示范围比父类小,小的变量 = 大的值,


强制转换,有风险,向下转型!


向上转型:把子类对象赋给父类的变量—— 一定成功,无风险,自动转即可
向下转型:把父类值赋给子类的变量—— 有风险,不一定成功,强转


子类 变量 = (子类):(  ?  )
1 该子类对象:编译成功,运行成功
2 父类对象或其它子类对象:编译成功,运行报错


只有2种情况编译,运行都成功:
1 本类引用指向本类对象
2 父类引用指向子类对象(向上转型)


***自身知识漏洞——复杂类型的的属性!Girl mygirl(引用)




4 instanceof(关键字):为了控制引用数据类型强制转换的风险,我们采用


instanceof来做判断,子类变量是否指向了该子类对象本身!






5 动态绑定


当父类引用指向子类对象本身时,如果我们调用被重写方法,会得到子类重写后的


效果。
因为:这个对象本身就是就是一个子类对象,所以它的实现一定是子类自己的实现




6 多态的主要应用


——多态参数
——异构集合


基本数据类型的父类没有Object这个说法:基本数据类型的存放形式与引用类型存


放形式不同,Object可以放对象,不能放值!




二 抽象


 抽象类---用可选修饰符abstract修饰的类
//特点:1、抽象不能产生对象;(原因:对象是具体的,实际的存在,不应该有


不确定的东西)
//    2、抽象类存在的意义就在于产生子类
//    3、抽象类里面可以定义:属性/构造/方法/初始化块,总之一个类该有的它


都可以有
//    4、语法上允许一个抽象类里面没有抽象方法,但这样做失去了设计的意义



//    5、子类继承抽象类,必须实现抽象类中的所有的抽象方法,除非这个子类


自己也是抽象类
public abstract class Girl {
    
    //当一个方法,我们只能确定它的申明而无法确定它的实现,那么该方法就要


设计为抽象方法
    //语法:在方法的申明部分加上一个可选修饰符abstract,然后该方法不能有


方法的实现部分
    //    连{}也不能有!用;直接结束。
    //    有抽象方法的类,必须是抽象类。
    public abstract void response(); 
}  
0 0
原创粉丝点击