Day28多态
2022-08-31 22:09 rebirthhhh 阅读(12) 评论(0) 编辑 收藏 举报多态
即同一方法可以根据发送对象的不同而采用多种不同的行为方式。
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。
多态存在的条件
- 有继承关系
- 子类重写父类方法
- 父类引用指向子类对象
注意:多态是方法的多态,属性没有多态
instanceof
package oop.demo;
public class Per {
public void run(){
}
}
package oop.demo;
public class Stu extends Per{
@Override
public void run() {
System.out.println("son");
}
public void eat(){
}
}
package oop;
import oop.demo.Per;
import oop.demo.Stu;
public class Application {
public static void main(String[] args) {
//一个对象的实际类型是确定的
//可以指向的引用类型就不确定了
//对象能执行哪些方法,主要看对象左边的类型,和右边关系不大
Stu s1 = new Stu();
Per s2 = new Stu();//父类的引用指向子类
Object s3 = new Stu();
//子类能调用的方法都是自己的或者继承父类的
s2.run(); //子类重写了父类的方法,执行子类的方法
s1.run();
//父类可以指向子类,但是不能调用子类独有的方法
((Stu) s2).eat();
s1.eat();
}
}
子类重写父类的方法,执行子类。
是哪个类型,执行哪个的,两个都有时,执行子类的。
多态注意事项:
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系 类型转换异常!ClassCastException!
3.多态存在条件:继承关系,方法需要重写,父类引用指向子类对象。father f1 = new son();
哪些方法不能被重写:
1.static 静态方法,属于类,它不属于实例
2.final 常量
3.private 方法 私有的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术