成员变量和成员方法在多态中的使用规则

    科技2022-08-30  120

    **

    成员变量

    **

    package demo01; public class Fu { int num =10; public void showNum() { System.out.println(num); } } package demo01; public class Zi extends Fu { int num = 20; int age=16; @Override public void showNum() { System.out.println(num); } } package demo01; /*访问成员变量 1.直接通过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上找。 2.间接通过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则向上找。 * */ public class demo01Multifield { public static void main(String[] args) { //父类引用指向子类对象 Fu obj = new Zi(); System.out.println(obj.num); /*System.out.println(obj.age);错误写法!*/ System.out.println("==========="); //子类没有覆盖重写,就是父:10 //子类覆盖重写,就是子:20 obj.showNum(); } }

    分割线===========================================

    成员方法

    package demo01; /* 在多态代码当中,成员方法的访问规则是: 看new的是谁,就优先用谁,没有则向上找。 口诀:编译看左边,运行看右边 对比 成员变量:编译看左边,运行看左边 成员方法:编译看左边,运行看右边 * */ public class demo02mulitMethod { public static void main(String[] args) { Fu obj = new Zi();//多态 obj.method();// 父子都有,优先用子类 obj.methodFu();//子类没有,父类有,向上找父类 //编译看左边,左边是Fu,Fu当中没有methodZi方法,所以编译报错。 //obj.methodZi; } } package demo01; public class Zi extends Fu { int num = 20; int age=16; @Override public void showNum() { System.out.println(num); } @Override public void method() { System.out.println("子类方法"); } public void methodZi(){ System.out.println("子类特有方法"); } } package demo01; 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("父类特有方法"); } }
    Processed: 0.014, SQL: 9