面向对象--多态--多态访问成员的特点

多态访问成员的特点

程序示例

/*
    多态访问成员的特点:
        1、成员变量
            编译看左边,运行也看左边。
            
            编译看左边:指的是看父类中有没有该成员,如果有说明编译不报错,可以进行访问
            运行看左边:指的是编译不报错的前提下,去访问父类中的成员。
            
        2、构造方法
            创建子类对象的时候,初始化子类先调用子类的构造方法,
                  子类中的构造方法第一句默认有一个super()            
            
        3、成员方法
            编译看左边,运行看右边
            
                编译看左边:指的是看父类中有没有该成员,如果有说明编译不报错,可以进行访问
            运行看右边:指的是编译不报错的前提下,去访问子类中的成员。
            
        4、静态方法
            编译看左边,运行也看左边
           (算不上重写了,访问的是类本身的东西)
            
            记忆方法:除了成员方法:编译看左边,运行看右边
                      其他都是:编译看左边,运行也看左边   
              
            注意:其实都是编译看左边,运行看左边。只是子类重写父类的方法时可以掩盖父类的方法-->编译看左边,运行看右边。
*/

class Animal{
    int a = 10;

    Animal(){
        System.out.println("Animal中的无参构造方法");
    }

    public void eat(){
        System.out.println("吃饭");
    }
//    父类的静态成员方法
    public static void sleep(){
        System.out.println("睡觉");
    }
}

class Dog extends Animal{
    int a = 20;

    Dog(){

        System.out.println("Dog中的无参构造方法");
    }
  
    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }
//    这是子类的静态成员方法(并不是方法的重写,因为静态成员属于类本身)
    public static void sleep(){
        System.out.println("侧着睡");
    }
}

public class PolymorphicDemo1 { 
    public static void main(String[] args) {
//          多态类创建对象
        Animal animal = new Dog();
//       System.out.println(animal.a);  //输出结果为Animal类中的a值为10
        animal.eat();
        animal.sleep();
//          静态成员可以通过类名调用 
//       Animal.sleep();
    }
}

 

posted @ 2021-12-10 21:49  赤兔胭脂小吕布  阅读(80)  评论(0编辑  收藏  举报