`
yosong
  • 浏览: 17455 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java继承关系的父子类中相同的成员变量

    博客分类:
  • Java
 
阅读更多

         最近又重温了一遍《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

 

从结果即可以看出子类中有两个相同名称的成员变量,所以成员变量没有重写。

 

分享到:
评论
1 楼 francis.xjl 2012-10-17  
今天在SCJP的题库中看到类似的题目~~

相关推荐

    java父子资料(答案)

    - **知识点**: 如果一个 Java Applet 源程序文件中只定义了一个类(例如 `MyApplet`),那么该类必须继承自 `Applet` 类,并且源文件名应与类名一致,即 `MyApplet.java`。 **5. Java Application 的编译与运行** -...

    父子类接口实验

    在Java编程中,"父子类接口实验"涉及到的核心概念是面向对象设计中的继承、多态性、抽象类以及接口的使用。下面我们将详细探讨这些知识点。 1. **继承(extends)**:继承是面向对象的一个重要特性,允许一个类...

    java笔记整理(超详细).pdf

    Java中的接口支持多继承(接口与接口之间为继承关系),因为接口不提供具体实现方式,只是一种规范,所以支持;Java的类不支持多继承的原因是Java是强类型语言,多继承会导致调用的不确定性,编译器无法确定要调用的...

    利用UML类图设计Java应用程序详解.doc

    5. 继承关系(Inheritance):继承关系是类之间的父子关系,用于描述类之间的继承关系。 UML类图的设计原则 在设计UML类图时,需要遵循以下几个原则: 1. 高内聚、低耦合:类之间的关系应该是松散的,避免紧耦合...

    Java中类的生命周期.doc

    类加载器之间存在父子关系,但这种关系不是Java类的继承关系,而是一种层次结构,允许子加载器委托父加载器完成加载任务。这种机制有助于保护程序的安全性和稳定性。 #### 五、总结 了解Java中类的生命周期对于...

    JAVA讲义第3章.pdf

    首先,讲解Java的继承机制,Java允许类之间有父子关系。类通过关键字extends来继承父类的属性和方法。如文档中出现的student类继承了classname并实现了family接口,展现了继承和接口实现的结构。 在继承的基础上,...

    Java基础复习笔记01数组_内存形式_父子_内存控制

    ### Java基础复习笔记01:数组、内存形式、父子关系及内存控制 #### 1. 前言 本文档旨在回顾并总结Java基础知识中关于数组、内存管理、对象继承等核心概念的理解与实践。作者希望通过这篇笔记加深对Java基础理论的...

    java笔记整理(超详细) java笔记整理(超详细)

    - 重写发生在父子类中,方法名、参数列表必须相同,返回值和异常必须遵守规则。 7. **封装**: - 封装隐藏了对象的复杂性,提供公共接口供外部使用,保护数据安全,防止意外修改。 8. **接口和抽象类**: - ...

    JAVA语言程序设计期末题库.pdf

    如果`catch`块的参数是异常类的父子关系,子类异常应该放在前面,因为子类异常可以捕获所有的父类异常。 8. **继承与子类**:在给定的代码中,`SubClass`继承自`SuperClass`,并且`SubSubClass`继承自`SubClass`,...

    java-notes(JAVA笔记资料)[定义].pdf

    在Java中,变量分为局部变量、实例变量和类变量。局部变量只在方法内部有效,必须先赋值后使用。实例变量是对象的非静态属性,如果没有初始化,系统会赋予默认值。类变量则是用`static`修饰的,只初始化一次,由所有...

    详解java中面向对象设计模式类与类的关系

    在Java中,单向关联表现为一个类使用另一个类作为成员变量,双向关联表现为两个类之间互相使用对方作为成员变量。 代码样例: ```java public class Son { Father father = new Father(); public void getGift() ...

    21天学通Java-由浅入深

    240 12.2.1 创建局部内部类 240 12.2.2 在局部内部类中访问外部类成员变量 240 12.2.3 在局部内部类中访问外部类的局部变量 241 12.2.4 静态方法中的局部内部类 243 12.3 静态内部类 244 12.3.1 创建静态内部类 244 ...

    父子实例的内存控制.rar_父子实例的内存控制

    在Java编程语言中,"父子实例的内存控制"是一个重要的概念,主要涉及到继承关系下的对象引用和内存管理。当我们创建一个子类对象时,它同时继承了父类的所有非私有属性和方法。这里,我们将深入探讨如何通过父类类型...

    046-jack-java笔记笔记笔记笔记

    如果两个引用类型之间没有父子继承关系,那么它们的变量也不能使用 == 进行比较。 三、equals 方法和 == 的区别 equals 方法比较的是两个对象的内容是否相等,而 == 比较的是两个对象在内存中存放的地址是否为同一...

    Java-常见面试题.pdf

    * 修饰类:表明该类不可被继承,类中的所有成员方法都隐式的被指定为 final 方法,成员变量则可以定义为 final,也可以不定义为 final。 * 修饰方法:用 final 修饰方法的原因有两个:锁定这个方法,防止任何继承类...

    java笔记,快速入门java

    - 继承不是简单的父子关系,而是基于类的扩展。 - 设计时应适当公开父类的访问权限,以便子类继承。 - 继承时需注意构造方法的处理。 #### 七、方法重写 - **概念**:子类中有一个方法与父类的方法具有相同的...

    JAVA常用英文

    继承,用于定义类之间的父子关系,子类继承父类的属性和方法。 ### false 布尔值,表示逻辑上的“假”,与`true`相对。 ### final 最终,用于修饰不可变的变量或方法,一旦赋值后不能修改。 ### finally 最终...

    java基础,入门的最好笔记

    Java是面向对象编程语言,它的核心概念包括类、对象、继承、多态等。下面将详细解释这些基础知识。 1. **类与对象**:类是一种抽象的数据类型,它定义了一组特性和行为,即属性(变量)和方法(函数)。对象是类的...

Global site tag (gtag.js) - Google Analytics