zoukankan      html  css  js  c++  java
  • 多态中成员变量/成员方法的使用特点---Java

    /*
    * 访问成员变量的两种方法:
    *
    * 1. 直接通过对象名称访问成员变量: 看等号左边是谁,优先用谁,没有则向上找
    * 2. 间接通过成员方法访问成员变量: 看该方法属于谁,优先用谁,没有则向上找
    * */

    /*
    * 换言之:
    * 当访问成员变量,优先等号左侧(父类)
    * 当访问成成员方法,1. 子类重写-->优先子;2. 子类继承没重写--->优先父*/


     1 public class Fu {
     2     int num = 10;
     3   //成员变量特点分析
     4     public void showNum(){
     5         System.out.println(num);
     6     }
     7     public void fuShow(){
     8         System.out.println(num);
     9     }
    10   //成员方法特点分析
    11     public void method(){
    12         System.out.println("父类方法");
    13     }
    14     public void methodFu(){
    15         System.out.println("父类特有方法");
    16     }
    17 }
     1 public class Zi extends Fu{
        //成员变量分析
    2 int num = 20; 3 4 int age = 24; 5    6 @Override 7 public void showNum(){ 8 System.out.println(num); 9 } 10   //成员方法分析 11 @Override 12 public void method(){ 13 System.out.println("子类方法"); 14 } 15 public void methodZi(){ 16 System.out.println("子类特有方法"); 17 } 18 }
     1 public class Demo01MultiField {
     2 
     3     public static void main(String[] args) {
     4         //多态的写法,父类引用指向子类对象
     5         Fu obj = new Zi();
     6 
     7         System.out.println(obj.num);//优先父类-- 对象名称访问成员变量,看等号左边是谁
     8         // System.out.println(obj.age);  //不会向下查找
     9 
    10         System.out.println("===============================");
    11         obj.showNum();  // 20--->  成员方法访问成员变量,子类重写了该方法,即子类也有该方法,优先子类
    12 
    13         obj.fuShow();  //  10--->  成员方法访问成员变量,子类继承了没重写,看该方法属于谁,优先用谁
    14     }
    15 }
    /*
    * 在多态的代码当中,成员方法的访问规则是:
    * 看new的是谁,就优先用谁,没有则向上找*/

    /*口诀:
    * 编译看左边,运行看右边
    *
    * 对比一下:
    * 成员变量 :编译看左,运行还看左
    * 成员方法 :编译看左边,运行看右边
    * */


     1 public class Demo02MultiMethod {
     2 
     3     public static void main(String[] args) {
     4         Fu obj = new Zi();
     5 
     6         obj.method();  //父子都有,优先子
     7         obj.methodFu();  //子类没有,父类有,向上找到父类
     8 
     9         //编译看左,左边是Fu,Fu中没有methodZi方法,所以报错
    10         //obj.methodZi();
    11 
    12 
    13     }
    14 }
  • 相关阅读:
    HDU题目分类
    nyoj50爱摘苹果的小明
    nyoj24大数阶乘
    hduoj1094A+B for InputOutput Practice (VI)
    nyoj198数数
    NYOJ463九九乘法表
    nyoj436sum of all integer numbers
    hduoj1042N!
    hduoj1095A+B for InputOutput Practice (VII)
    nyoj458小光棍数
  • 原文地址:https://www.cnblogs.com/zeon/p/13500532.html
Copyright © 2011-2022 走看看