多态中成员变量、成员方法的使用特点和多态的好处
多态中成员变量的使用特点
访问成员变量的两种方式:
1. 直接通过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上找。
2. 间接通过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则向上找。
public class Fu { int num = 10; public void showNum(){ System.out.println(num); } }
public class Zi extends Fu{ int num = 20; @Override public void showNum() { System.out.println(num); } }
public class Demo01MultiField { public static void main(String[] args) { //使用多态的写法,父类引用指向子类对象 Fu obj = new Zi(); System.out.println(obj.num); System.out.println("=========="); //子类没有覆盖重写,就是父 //子类如果覆盖重写,就是子 obj.showNum(); } }
多态中成员方法的使用特点
在多态的代码当中,成员方法的访问规则是:
看new的是谁,就优先用谁,没有则向上找。
>多态:编译看左边,运行看右边。
>成员变量:编译看左边,运行还看左边。
>成员方法:编译看左边,运行看右边。
public class Fu { int num = 10; public void showNum(){ System.out.println(num); } public void method(){ System.out.println("父类方法"); } public void methodFu(){ System.out.println("父类的特有方法"); } }
public class Zi extends Fu{ int num = 20; @Override public void showNum() { System.out.println(num); } @Override public void method(){ System.out.println("子类方法"); } public void methodZi(){ System.out.println("子类的特有方法"); } }
public class Demo01MultiField { public static void main(String[] args) { //多态 Fu obj = new Zi(); //父类都有,优先用子 obj.method(); //子类没有,父类有,向上找到父类 obj.methodFu(); } }
多态的好处
无论右边new的时候换成哪个子类对象,等号左边调用方法都不会变化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix