山西百度查关键词排名,wordpress模板优化,东营网站设计多少钱,网站这么做404页面结论#xff1a;
Java中静态属性和静态方法是可以被继承的#xff0c;但是不可以被重写#xff0c;而是被隐藏。
Java中非静态属性#xff0c;可以被继承#xff0c;但是不可以被重写#xff0c;而是被隐藏。
Java中非静态方法#xff0c;可以被继承#xff0c;可以…结论
Java中静态属性和静态方法是可以被继承的但是不可以被重写而是被隐藏。
Java中非静态属性可以被继承但是不可以被重写而是被隐藏。
Java中非静态方法可以被继承可以被重写因此可以实现多态 情况
属性
1当我们父类A中和子类B中有相同的静态属性或者非静态属性名称的的时候如果我们这样调用
A a new B();
那么我们使用a变量访问的属性都是我们父类中的属性。
2当我们父类A中有子类B中没有的静态属性和方法的时候
A a new B();
我们使用a变量访问的属性也是我们父类中的属性。
B b new B();
我们使用b变量访问的属性也是我们父类中的属性(因为继承过来了)
3当我们父类A中和子类B中都含相同名称的静态变量和非静态变量
B b new B();
这时候使用b变量访问的是我们B中的属性。因为属性不可以重写
关于属性总结一条规律就是 看我们 A a new B();中调用者a的左边 访问的都是左边的属性。 方法
1对于非静态方法我们都知道
A a new B()
如果B中有这个方法那么访问的是B中的方法如果B中没有这个方法访问的是从A中继承的这个方法
B b new B
如果B中有这个方法那么访问的是B中的方法如果B中没有这个方法访问的是从A中继承的这个方法
A a new A();
访问的是A中的方法
关于非静态方法总结一条就是 看我们 A a new B();中调用者a的右边 访问的都是右边边的方法 方法
2父类A中有静态方法但是子类B中有同名的静态方法
A a new B()
调用的是A中的方法
B b new B
调用的是B中的方法
2父类A中有静态方法但是子类B中没有这个名称的静态方法
A a new B()
调用的是A中的方法
B b new B
调用的是B中从A中继承的方法
关于静态方法总结一条规律就是 看我们 A a new B();中调用者a的左边 访问的都是左边的静态 方法
测试例子 package com.example.test;public class A {public static String staticStr A静态属性;public String nonStaticStr A非静态属性;public static void staticMethod(){System.out.println(A静态方法);}public void nonStaticMethod(){System.out.println(A非静态方法);}
}package com.example.test;public class B extends A{//子类Bpublic static String staticStr B改写后的静态属性;public String nonStaticStr B改写后的非静态属性;public static void staticMethod(){System.out.println(B改写后的静态方法);}} package com.example.test;public class C extends A{//子类C继承A中的所有属性和方法} package com.example.test;public class StaticExtendsTest {public static void main(String[] args) {C c new C();System.out.println(c.nonStaticStr);System.out.println(c.staticStr);c.staticMethod();//输出的结果都是父类中的非静态属性、静态属性和静态方法,推出静态属性和静态方法可以被继承System.out.println(-------------------------------);A c1 new C();System.out.println(c1.nonStaticStr);System.out.println(c1.staticStr);c1.staticMethod();//结果同上输出的结果都是父类中的非静态属性、静态属性和静态方法,推出静态属性和静态方法可以被继承System.out.println(-------------------------------);B b new B();System.out.println(b.nonStaticStr);System.out.println(b.staticStr);b.staticMethod();System.out.println(-------------------------------);A b1 new B();System.out.println(b1.nonStaticStr);System.out.println(b1.staticStr);b1.staticMethod();//结果都是父类的静态方法说明静态方法不可以被重写不能实现多态}}