public class Parent {
// 父类属性
public String name = "父类属性";
public int val = 1;
// 静态方法
public static void means1(){
System.out.println("父类中的函数1");
}
// 实例方法
public void means2(){
System.out.println("父类中的函数2");
}
}
class Child extends Parent {
// 子类属性
public static String name = "子类属性";
public int val = 2;
public static void means1(){
System.out.println("子类中的函数1");
}
@Override
public void means2(){
System.out.println("子类中的函数2");
}
}
class test{
public static void main(String[] args) {
Parent p=new Child();
System.out.println(p.name);//成员变量看左边 "父类属性"
p.means1();//静态方法编译运行看左边 = "父类中的函数1"
p.means2();//非静态方法编译看左、运行看右 = "子类中的函数2"
}
}
成员变量静态方法:编译看左边运行看右边
非静态方法:编译运行都看右。
多态是同一个对象,在不同时刻表现出来的不同形态
举例:猫
我们可以说猫是猫:猫 cat = new 猫();
我们也可以说猫是动物:动物 animal = new 猫();
这里猫在不同的时刻表现出来了不同的形态,这就是多态
多态的前提有三个:
1、要有类的继承/接口的实现
2、要有方法的重写
3、要有父类引用指向子类对象
静态方法在类加载时就已经加载了,在类实例对象建立前就已经存在了,所有无法被后出现的子类对象进行重写。---------------获得结论:C:静态方法:编译和运行都看父类。子类可以继承父类的静态方法,但不能重写。如果父类中定义的静态方法在子类中被重新定义,那么在父类中定义的静态方法将被隐藏而非重写。换句话说,父类和子类中含有的其实是两个没有关系的方法,它们的行为也并不具有多态性、
Java—多态的成员访问特点“编译看左边,运行看左边”还是“编译看左边,运行看右边”是什么意思?看完就懂了~~_java 多态 变量编译运行看左边-CSDN博客