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

本文详细介绍了Java中的多态性在成员变量、构造方法、成员方法和静态方法访问上的特点。重点讲解了成员方法的编译时和运行时行为,以及静态方法的特性。通过实例展示了如何在Animal和Dog类中实现多态,并在PolymorphicDemo1类中进行调用。
摘要由CSDN通过智能技术生成

多态访问成员的特点

程序示例

/*
    多态访问成员的特点:
        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();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值