多态
public class zi extends fu{
public void say (){
System.out.println("say,erzi");
}
public void eat(){
System.out.println("eat");
}
}
public class fu {
public void say(){
System.out.println("say,baba");
}
}
public class Application {
public static void main(String[] args) {
zi z = new zi();//创建一个子类对象
fu f = new zi();//父类的引用指向子类,但只能用他自己本身的方法,不能使用子类独有的方法
f.say();
z.eat();
}
}
多态:
-
多态是方法的多态,属性没有多态
-
父类和子类,有关系的类,如果两个类型没有关系,则会报异常ClassCastException
-
对象能执行哪些方法主要看左边的类型,和右边关系不大,左边是父类,则只能使用父类方法或者object,左边是子类,则可以使用自己独有的方法和父类的方法
-
如果两个类存在继承关系,且父类的引用指向子类,那这个父类型本身的方法会被子类覆盖重写,如上代码,Fu,Zi两个类都有say方法,但是父类的引用指向了子类,这样操作以后,f调用say方法时会输出被子类重写以后的方法,且不能使用子类独有的eat方法,如需使用需要进行强制类型转换为zi
-
存在多态的条件:有继承关系,方法需要重写,父类引用指向子类对象
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!