面向对象--多态--多态访问成员的特点
多态访问成员的特点
程序示例
/*
多态访问成员的特点:
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();
}
}