多态 object 抽象类和抽象方法

多态
定义
一种事物的多种形态|表现形式
行为多态
前提
继承 | 实现 的基础上
多态的最终表现形式
父类应用子类调用
多态的调用
成员变量
编译运行看父类|左边|类型
成员方法
编译看父类|左边|类型,运行找子类|右边|对象
必须要配合方法的重写,多态才有意义
做题的四大原则
一、继承链:自己没有找父类
二、 编译看类型、确定方法,运行找对象
三、就近最优原则
*四、父类引用对子类新增方法不可见
引用数据类型的转换
基本数据类型和引用数据类型的区别和联系
基本 : 数据类型转换
自动类型提升 : 小 —> 大
强制类型转换 : 大 —> 小
小范围类型 变量 = (小范围类型)大范围类型数据;
引用 : 转型
小: 子类 大 : 父类
向上转型 : 子类 --> 父类
向下转型 : 父类 --> 子类
子类类型 变量 = (子类类型)父类引用;
需求 : 当多态调用不能调用子类独有内容时候,可以向下转型,然后调用子类独有内容
注意
ava.lang.ClassCastException类型转换异常
在向下转型的时候,如果抓成其他的子类类型,就会遇到这个异常
instanceof 运算符
引用 instanceof 类型 : 判断前面的引用是否指向后面类型的对象或者后面类型的子类对象,如果是返回true,不是返回fales
Object类
定义:老祖宗类
是java中所有类的父类
如果一个类没有显示的继承父类,默认继承
自Object类
toString : 返回对象的字符串表现形式
当输出一个对象 的引用的时候,输出的是对象的引用调用toString方法的返回值==>默认调用toString
为什么要在子类中重写toString方法 :
因为输出对应的引用时候不想是打印对象的地址值,想要输出对象的所有属性值,对从Object中继承的toString需要,toString实现不满意,在子类中重写toString
注意 : 当定义javabean类型,规范都需要重写toString
equals : 比较两个对象数据是否相等
Object类中的equals方法 : 默认比较对象的地址值
public boolean equals(Object obj) {
return (this == obj);
}

    为什么要子类中重写equals方法 :
        使用Object类的equals方法,默认比较对象地址,业务需求想要比较根据对象的属性值比较是否相等,可以在子类中根据需要重写equals,实现比较对象所有属性而非地址值
	比较字符串类型的数据 : 使用String重写的equals比较字符串对象的内容而非地址
javabean的定义规范
	1.类是公共的
        2.至少提供一个空构造
        3.属性私有化
        4.公共的访问方式
        5.重写equals与toString方法
快捷键
	在老师代码java.car里面多多使用

抽象类和抽象方法
定义
抽象类 : 被abstract修饰的类
抽象方法 : 被abstract修饰的方法
没有方法体
必须存在与抽象类中
需求
定义开发部门不同职位工作内容
开发部门 Develop --> work()
java攻城狮 : work–> 后端开发
web程序猿 : work–> 前端开发
注意
1.抽象类不能实例化
2.抽象方法必须存在与抽象类中
3.抽象类中可以定义可以不定义抽象方法,可以定义任意内容
4.抽象类的使用 :
1)具体子类对象调用成员
重写所有的抽象方法 + 按需新增
2)抽象子类
按需重写 + 按需新增
5.抽象方法必须被重写的,但是只需要重写一次,按需重写多次
6.abstract不能与private,final,static,native一起使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值