Java静态属性和方法的继承问题
来源:互联网 发布:淘宝gxg官方店是真的吗 编辑:程序博客网 时间:2024/06/08 00:32
今天在看《Head First设计模式》的工厂方法时,文中提到简单工厂方法采用静态方法的不足:不能通过继承来改变创建方法的行为。平时没有注意到这一点,查了些资料和做了些实验,特此记录下来。
Parent.java类
public class Parent { public String normalStr = "Normal member of parent."; public static String staticStr = "Static member of parent."; public void normalMethod(){ System.out.println("Normal method of parent."); } public static void staticMethod(){ System.out.println("Static method of parent."); }}
Child.java类
public class Child extends Parent { public String normalStr = "Normal member of child."; public static String staticStr = "Static member of child."; public void normalMethod(){ System.out.println("Normal method of child."); } public static void staticMethod(){ System.out.println("Static method of child."); }}
测试类Main.java类
public class Main { public static void main(String[] args) { Child child = new Child(); System.out.println(child.normalStr); System.out.println(Child.staticStr); child.normalMethod(); Child.staticMethod(); System.out.println("-------------------------------------------------"); Parent child1 = new Child(); System.out.println(child1.normalStr); System.out.println(Parent.staticStr); child1.normalMethod(); Parent.staticMethod(); }}
得到的结果:
Normal member of child.Static member of child.Normal method of child.Static method of child.-------------------------------------------------Normal member of parent.Static member of parent.Normal method of child.Static method of parent.
结论
对于非静态的属性和方法
- 对于非静态属性,子类可以继承父类的非静态属性。但是当子类和父类有相同的非静态属性时,并没有重写并覆盖父类的非静态属性,只是隐藏了父类的非静态属性。
- 对于非静态的方法,子类可以继承父类的非静态方法并可以重写覆盖父类的非静态属性方法。
对于静态的属性和方法
- 对于静态的属性,子类可以继承父类的静态属性。但是和非静态的属性一样,会被隐藏。
- 对于静态的方法,子类可以继承父类的静态方法。但是子类不可重写覆盖父类的静态方法,子类的同名静态方法会隐藏父类的静态方法。
1 0
- Java静态属性和方法的继承问题
- Java静态属性和方法的继承问题
- java中静态属性和和静态方法的继承问题 以及多态的实质
- java中静态属性和和静态方法的继承问题 以及多态的实质
- java中静态属性和和静态方法的继承问题 以及多态的实质
- java中静态属性和和静态方法的继承问题以及多态的实质
- java中静态属性和和静态方法的继承问题 以及多态的实质
- 关于java中静态属性、静态方法的继承问题
- java继承 父类子类方法调用问题 属性和静态方法是没有多态的
- Java静态属性与静态方法能否被继承的问题
- java的静态方法继承问题
- JAVA中的静态方法和非静态方法的继承覆盖问题
- Java之属性和静态方法的继承以及多态的实质
- Java静态方法继承问题
- java中静态变量与静态方法的继承问题
- Java静态变量与静态方法的继承问题
- 关于Java中子类能否继承和重写父类的静态方法问题
- Java 继承中静态方法和变量的 覆盖隐藏问题
- Android 基于google Zxing实现二维码的生成,识别和长按识别的效果
- 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算
- android intentFilter 详解
- 数据结构--01背包问题
- 开源项目之AndroidImageSlider图片多姿势轮播
- Java静态属性和方法的继承问题
- 数据结构_P6
- (二) Q - Q tricky sum
- Node.js Express目录结构
- unity做陶艺(动态改变模型网格)
- UIScrollView的PageEnable可以实现slider
- Docker 入门教程(四)
- 字符数组与字符指针
- Orocos Activity&ExecutionEngine 解析