18_多态
1.概念
2.格式
3.前提
4.多态与继承
5.多态的优缺点
6.转型
7.instanceof
8.代码实现
package JavaBasicReview; public class JavaGrammer { public static void main(String[] args) { //多态,父类引用指向子类对象(向上转型) Fu fu = new Zi(); fu.methodFu();//可以访问父类中特有的方法 fu.methodOne();//可以访问父类中被子类重写的方法 System.out.println(fu.age);//可以访问父类的成员变量 //System.out.println((fu.name);//无法访问子类成员变量 System.out.println(((Zi) fu).name);//如果想访问子类成员变量,必须向下转型 //fu.methodZi();//无法访问子类特有的方法 ((Zi) fu).methodZi();//如果想访问子类特有方法,必须向下转型 System.out.println(fu instanceof Zi); System.out.println(fu instanceof Fu); System.out.println("========继承============"); Zi zi = new Zi(); zi.methodFu();//可以访问父类特有的方法 zi.methodOne();//可以访问父类中被子类重写的方法 System.out.println(zi.age); System.out.println(zi instanceof Zi); System.out.println(zi instanceof Fu); System.out.println("====多态的应用========"); //多态的应用,前期定义父类,后期使用子类,提高了代码的扩展性 methodOne(new Zi()); methodOne(new ZiOne()); } public static void methodOne(Fu obj){ obj.methodOne(); } } class Fu { int age = 99; void methodFu(){ System.out.println("Fu类中特有的方法"); } void methodOne(){ System.out.println("Fu类中被重写的方法"); } } class Zi extends Fu { int age = 88; String name = "zi"; void methodZi(){ System.out.println("Zi类中特有的方法"); } @Override void methodOne() { /*super.methodOne();*/ System.out.println("被子类重写的方法,Zi类重写"); } } class ZiOne extends Fu{ @Override void methodOne() { /*super.methodOne();*/ System.out.println("被子类重写的方法,ZiOne类重写"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界