最近又重温了一遍《java编程思想》,在看的过程中产生一个想法,java中继承关系的父子类,相同的方法会被重写,那相同的变量会怎样呢?
答案是变量没有重写之说,如果子类声明了跟父类一样的变量,那意谓着子类中将有两个相同名称的变量
;
看如下有趣的例子:
public class A {
public int m = 1;
public void view(){
System.out.println(this.m);
System.out.println(this.getClass());
}
}
public class B extends A{
public int m = 2;
/**
* @Override
* public void view(){
* System.out.println(this.m);
* System.out.println(super.m);
* System.out.println(this.getClass());
* }
*/
public static void main(String[] args) {
B b = new B();
b.view();
}
}
看执行结果:
1
class B
而如果将注释去掉,即重写view方法,再看结果:
2
1
class B
从结果即可以看出子类中有两个相同名称的成员变量,所以成员变量没有重写。
分享到:
相关推荐
- **知识点**: 如果一个 Java Applet 源程序文件中只定义了一个类(例如 `MyApplet`),那么该类必须继承自 `Applet` 类,并且源文件名应与类名一致,即 `MyApplet.java`。 **5. Java Application 的编译与运行** -...
在Java编程中,"父子类接口实验"涉及到的核心概念是面向对象设计中的继承、多态性、抽象类以及接口的使用。下面我们将详细探讨这些知识点。 1. **继承(extends)**:继承是面向对象的一个重要特性,允许一个类...
Java中的接口支持多继承(接口与接口之间为继承关系),因为接口不提供具体实现方式,只是一种规范,所以支持;Java的类不支持多继承的原因是Java是强类型语言,多继承会导致调用的不确定性,编译器无法确定要调用的...
5. 继承关系(Inheritance):继承关系是类之间的父子关系,用于描述类之间的继承关系。 UML类图的设计原则 在设计UML类图时,需要遵循以下几个原则: 1. 高内聚、低耦合:类之间的关系应该是松散的,避免紧耦合...
类加载器之间存在父子关系,但这种关系不是Java类的继承关系,而是一种层次结构,允许子加载器委托父加载器完成加载任务。这种机制有助于保护程序的安全性和稳定性。 #### 五、总结 了解Java中类的生命周期对于...
首先,讲解Java的继承机制,Java允许类之间有父子关系。类通过关键字extends来继承父类的属性和方法。如文档中出现的student类继承了classname并实现了family接口,展现了继承和接口实现的结构。 在继承的基础上,...
### Java基础复习笔记01:数组、内存形式、父子关系及内存控制 #### 1. 前言 本文档旨在回顾并总结Java基础知识中关于数组、内存管理、对象继承等核心概念的理解与实践。作者希望通过这篇笔记加深对Java基础理论的...
- 重写发生在父子类中,方法名、参数列表必须相同,返回值和异常必须遵守规则。 7. **封装**: - 封装隐藏了对象的复杂性,提供公共接口供外部使用,保护数据安全,防止意外修改。 8. **接口和抽象类**: - ...
如果`catch`块的参数是异常类的父子关系,子类异常应该放在前面,因为子类异常可以捕获所有的父类异常。 8. **继承与子类**:在给定的代码中,`SubClass`继承自`SuperClass`,并且`SubSubClass`继承自`SubClass`,...
在Java中,变量分为局部变量、实例变量和类变量。局部变量只在方法内部有效,必须先赋值后使用。实例变量是对象的非静态属性,如果没有初始化,系统会赋予默认值。类变量则是用`static`修饰的,只初始化一次,由所有...
在Java中,单向关联表现为一个类使用另一个类作为成员变量,双向关联表现为两个类之间互相使用对方作为成员变量。 代码样例: ```java public class Son { Father father = new Father(); public void getGift() ...
240 12.2.1 创建局部内部类 240 12.2.2 在局部内部类中访问外部类成员变量 240 12.2.3 在局部内部类中访问外部类的局部变量 241 12.2.4 静态方法中的局部内部类 243 12.3 静态内部类 244 12.3.1 创建静态内部类 244 ...
在Java编程语言中,"父子实例的内存控制"是一个重要的概念,主要涉及到继承关系下的对象引用和内存管理。当我们创建一个子类对象时,它同时继承了父类的所有非私有属性和方法。这里,我们将深入探讨如何通过父类类型...
如果两个引用类型之间没有父子继承关系,那么它们的变量也不能使用 == 进行比较。 三、equals 方法和 == 的区别 equals 方法比较的是两个对象的内容是否相等,而 == 比较的是两个对象在内存中存放的地址是否为同一...
* 修饰类:表明该类不可被继承,类中的所有成员方法都隐式的被指定为 final 方法,成员变量则可以定义为 final,也可以不定义为 final。 * 修饰方法:用 final 修饰方法的原因有两个:锁定这个方法,防止任何继承类...
- 继承不是简单的父子关系,而是基于类的扩展。 - 设计时应适当公开父类的访问权限,以便子类继承。 - 继承时需注意构造方法的处理。 #### 七、方法重写 - **概念**:子类中有一个方法与父类的方法具有相同的...
继承,用于定义类之间的父子关系,子类继承父类的属性和方法。 ### false 布尔值,表示逻辑上的“假”,与`true`相对。 ### final 最终,用于修饰不可变的变量或方法,一旦赋值后不能修改。 ### finally 最终...
Java是面向对象编程语言,它的核心概念包括类、对象、继承、多态等。下面将详细解释这些基础知识。 1. **类与对象**:类是一种抽象的数据类型,它定义了一组特性和行为,即属性(变量)和方法(函数)。对象是类的...