Java基础之子类会不会继承父类的static变量和static方法
2017-04-07 22:13
435 查看
1 相关问题
(1)应用父类静态字段会不会初始化子类?(2)父类的静态方法能不能被子类重写?
(3)父类的静态变量被继承后,子类修改静态变量,为什么父类的也跟着变了?
2 解决思路-不能
2.1 概念
(1)重写:子类继承父类后,定义了一个和父类中的一模一样方法,这个一模一样是值方法名和参数的定义一模一样。这时候子类要实现这个方法,就称为对父类方法的重写。(2)重载:子类继承父类后,定义了一个和父类中相同名字的方法,但是参数不一样(必须),实现也不同(可选),这就是重载。
(3)静态方法:java中,static修饰符修饰的方法就是静态方法。所谓静态就是指:在编译之后所分配的内存会一直存在(不会被回收),直到程序退出内存才会释放这个空间。static类型的变量是归类所有,不是类的实例所有,一般用类名引用。
2.2 原因
因为静态方法从程序开始运行后就已经分配了内存,也就是说已经写死了。所有引用到该方法的对象(父类的对象也好子类的对象也好)所指向的都是同一块内存中的数据,也就是该静态方法。子类中如果定义了相同名称的静态方法,并不会重写,而应该是在内存中又分配了一块给子类的静态方法,没有重写这一说,我们应该称之为隐藏。
3 演示
(1)代码class Base { public static int countBase = 111; public static int count = 0; } class ClassOne extends Base { public static int count = 1; } public class Test { public static void main(String args[]) { System.out.println("父类引用父类countBase值:" +Base.countBase); System.out.println("子类引用父类的countBase值:" +ClassOne.countBase + "\n"); System.out.println("父类原来的count值:" +Base.count); System.out.println("子类原来的count值:" + ClassOne.count); ClassOne.count++; System.out.println("父类加1后的count值:" + Base.count); System.out.println("子类加1后的count值:" + ClassOne.count); } }
(2)结果
相关文章推荐
- Java中子类是否可以继承父类的static变量和方法而呈现多态特性
- Java中子类是否可以继承父类的static变量和方法而呈现多态特性
- Java 中子类是否只继承父类的非私有变量和方法?
- Java:子类能够继承父类的私有变量和私有方法?
- 2018/01/07JAVA 基础 / 接口与继承:重写【子类继承并覆盖父类的对象方法】、隐藏【子类继承并覆盖父类的类方法】与实现类实现接口方法の区别
- Java 继承 父类变量, 方法 与子类的关系:
- Java基础之父类与子类之间变量和方法的调用
- Java编程中,子类可以用用这种方法给继承父类的成员变量赋值么?
- 2018/01/08JAVA 基础 / 接口与继承:[Q]:若父类Hero提供了一个有参的构造方法,但是没有提供无参的构造方法。子类应该怎么处理?
- java中父类有static修饰的方法其子类能继承吗?若子类也有该方法,是覆盖还是重写?
- java基础:父类与子类之间变量和方法的调用
- java基础:父类与子类之间变量和方法的调用
- Java 中子类是否只继承父类的非私有变量和方法?
- Java对象初始化步骤&&子类继承父类后变量与方法调用情况
- java基础:父类与子类之间变量和方法的调用
- JAVA基础:子类、父类继承关系 静态块、非静态块、构造函数初始化顺序性、静态非静态方法覆盖
- java基础:父类与子类之间变量和方法的调用
- Java:子类是否只继承父类的非私有变量和方法?
- php基础 继承_子类中如何调用父类的变量和方法
- 2018/01/08JAVA 基础 / 接口与继承/Java关键词:变量引用 super 调用父类对象方法/构造方法【或者访问父类对象属性】的方式归纳