- 浏览: 30737 次
- 性别:
- 来自: 广州
最近访客 更多访客>>
最新评论
-
DragCheng:
这标题亮了
深入研究java.long.Class类(转) -
油炸大龙虾:
这个标题害人啊,哎……
深入研究java.long.Class类(转)
在网上看见一个关于java继承的问题,觉得这是很多初学java应该注意的问题。
Java代码
那么,控制台打出来的i的值是多少?
呵呵,如果一下功夫就能说出正确结果1,那么,下面部分就不需要往下看了。
1、类的继承知识点
(1)java不支持多重继承,也就是说子类至多只能有一个父类
(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法
(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承
(4)子类中定义的成员方法,并且这个成员方法的名字,返回类型,及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。
2、答案是2者如是说
子类B中的变量i和父类A中的变量i重名, 那么子类B中的变量i将会覆盖掉父类中的同名变量i. 则访问父类中的变量时jvm会把子类cast到父类.所以,打印出的结果应该是“i=2”;
3、歧义的产生
歧义的产生最关键的地方是子类B中的变量i将会覆盖掉父类中的同名变量i的覆盖两个字。这里,我觉得这两个字容易误导。应该改为屏蔽或隐藏。因为在这里父类的成员变量是没有被改变。
4、jvm的执行过程
(1)子类B 的构造方法被调用,实例化一个B对象,B对象的成员被初始化
(2)jvm隐含的调用父类的构造方法,实例化一个A对象,A对象的成员被初始化。
(3)由于A对象的printI()未被屏蔽,所以调用的A对象的printI()函数。
那么,在这里A的成员函数当然是访问自己的成员变量了。
5、super关键字
super关键字在java中的作用是使被屏蔽的成员变量或者成员方法或变为可见,或者说用来引用被屏蔽的成员变量和成员成员方法。super是用在子类中,目的是访问直接父类中被屏蔽的成员。上面的代码也可以这样写:
Java代码
Java代码
public abstract class A { int i=1; public void printI() { System.out.println("i="+i); } } public class B extneds A{ int i=2; public static void main(String[] args) { B b=new B(); b.printI(); } }
那么,控制台打出来的i的值是多少?
呵呵,如果一下功夫就能说出正确结果1,那么,下面部分就不需要往下看了。
1、类的继承知识点
(1)java不支持多重继承,也就是说子类至多只能有一个父类
(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法
(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承
(4)子类中定义的成员方法,并且这个成员方法的名字,返回类型,及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。
2、答案是2者如是说
子类B中的变量i和父类A中的变量i重名, 那么子类B中的变量i将会覆盖掉父类中的同名变量i. 则访问父类中的变量时jvm会把子类cast到父类.所以,打印出的结果应该是“i=2”;
3、歧义的产生
歧义的产生最关键的地方是子类B中的变量i将会覆盖掉父类中的同名变量i的覆盖两个字。这里,我觉得这两个字容易误导。应该改为屏蔽或隐藏。因为在这里父类的成员变量是没有被改变。
4、jvm的执行过程
(1)子类B 的构造方法被调用,实例化一个B对象,B对象的成员被初始化
(2)jvm隐含的调用父类的构造方法,实例化一个A对象,A对象的成员被初始化。
(3)由于A对象的printI()未被屏蔽,所以调用的A对象的printI()函数。
那么,在这里A的成员函数当然是访问自己的成员变量了。
5、super关键字
super关键字在java中的作用是使被屏蔽的成员变量或者成员方法或变为可见,或者说用来引用被屏蔽的成员变量和成员成员方法。super是用在子类中,目的是访问直接父类中被屏蔽的成员。上面的代码也可以这样写:
Java代码
public abstract class A { int i=1; public void printI() { System.out.println("i="+i); } } public class B extends A{ public int i=2; public void printI(){ super.printI(); } public static void main(String[] args){ B b= new B(); b.printI(); } }
发表评论
-
JAVA内存溢出解析(转)
2010-01-13 15:16 758JAVA内存溢出解析 核心 ... -
Java的内存泄漏(转)
2010-01-13 14:36 416问题的提出 Java 的一个重要优点就是通过垃圾收集器(Ga ... -
Java方法继承、方法重载、方法覆盖小总结(转)
2010-01-06 17:21 993Java方法继承、方法重载 ... -
JVM原理学习—— 类的初始化(转)
2010-01-05 16:53 623类的初始化工作,主 ... -
JVM原理学习 —— 虚拟机规范(转)
2010-01-05 16:51 970《Inside the JVM》一开始就指出,所谓“虚拟机”实 ... -
深入探索Java工作原理:JVM,内存回收及其他
2010-01-05 16:43 937深入探索Java工作原理: ... -
java里类的继承机制-构造方法(转)
2009-12-31 14:00 934这次我想深入探究以下java里类的继承机制。 我们知道,继承是 ... -
java 继承类 变量、静态变量、构造函数执行顺序(转)
2009-12-31 13:35 1997java 继承类 变量、静态变量、构造函数执行顺序 class ... -
map,set,list,等JAVA中集合解析
2009-12-30 15:51 1337map,set,list,等JAVA中集合 ... -
Class.getResourceAsStream 和 ClassLoader.getResourceAsStream
2009-12-29 11:21 653两个都可以用于从 classpath 里面进行资源读取, c ... -
JTA和JDBC事务
2009-12-28 15:44 888JTA和JDBC事务(转) 一般情况下,J2EE应用服务器 ... -
深入研究java.long.Class类(转)
2009-12-27 23:13 981前言:Java的类库日益庞大,所包含的类和接口也不计其数。但其 ... -
Java关键字之native,strictfp,transient,volatile
2009-12-21 14:04 587Java关键字(keywords) abstrac ... -
javap的使用
2009-12-16 22:38 710javap简介 原文网址 http://www.javare ... -
JAVA 基本数据类型取值范围
2009-12-16 15:55 1230先看一段代码 public class ... -
Tomcat启动分析
2009-12-14 17:23 1440Tomcat启动分析 核心提示:用 文本编辑工具打开用于启动T ... -
servlet的介绍
2009-12-14 17:14 523servlet的介绍 关键字: servlet的介绍 在 e ...
相关推荐
成员变量的覆盖(有时会被误认为是“重写”)是理解Java继承机制的关键之一。本文将详细解释成员变量覆盖的基本概念,并通过示例代码来展示这一现象。 #### 成员变量覆盖的基本概念 成员变量覆盖是指在子类中声明...
- **类(Class)**:Java中的核心概念,是对象的模板,定义了对象的属性(成员变量)和行为(方法)。 - **对象(Object)**:类的实例,是程序中的具体实体,通过new关键字创建。 - **封装**:通过类隐藏内部...
Java继承机制详解 Java继承是面向对象编程(OOP)的一种机制,允许一个类继承另一个类的成员变量和成员方法。通过继承,可以实现代码的重用和扩展。 在Java中,继承是通过使用关键字`extends`来实现的。例如,`...
### 论JAVA继承机制中父类与子类的关系 #### 摘要 本文深入探讨了Java语言中的继承机制,并重点分析了父类与子类之间的关系。文章围绕子类继承父类成员的过程、成员变量及方法的赋值、重写、覆盖等问题展开讨论,...
继承是指一个类继承另一个类的成员变量和方法,使得子类可以获得父类的所有成员变量和方法,并在此基础上增加自己的成员变量和方法。继承的关键字是 extends,它表示子类继承自父类。 继承的实现 Java 中的继承是...
代理类是 Java 语言中的一种机制,使得我们可以在运行时创建一个代理类,继承自原始类,并且可以访问原始类的非公有成员变量或方法。 优点:这种方法可以在运行时创建一个代理类,继承自原始类,非常灵活。 缺点:...
Java的继承机制允许一个类(如`BCOption`)继承另一个类(如`BankCount`),从而获得被继承类的所有非私有属性和方法。这里虽然没有明确的继承关系,但可以通过组合(Composition)的方式复用`BankCount`类的功能。...
在Java编程语言中,静态变量、静态方法、静态代码块以及非静态变量和非静态方法是核心概念,它们对于理解和编写Java程序至关重要。下面将详细解释这些概念,并通过实例程序来阐述它们的使用和内存管理。 首先,静态...
Java中的继承和接口是面向对象编程的关键特性,它们在软件设计中扮演着至关重要的角色,实现了代码的重用和类的层次结构。 继承是Java中创建新类的一种方式,它允许一个子类(SubClass)从一个已存在的父类...
通过实现接口,类可以拥有接口中声明的所有方法,这在单一继承机制下提供了更多的灵活性。接口还常用于定义常量,提供常量值的统一管理。 总结来说,Java的面向对象设计包括封装、继承和多态,这些特性使得代码更加...
Java 类和继承是面向对象编程的核心概念,它们构成了Java程序设计的基础。在这个代码集中,我们很显然会看到一系列关于如何创建和使用Java类以及实现继承的示例代码。以下是对这些概念的详细解释: 1. **Java 类**...
在Java编程语言中,继承是面向对象特性之一,它允许我们创建一个类(子类或派生类)作为现有类(父类...通过学习这个实例,开发者能够更好地理解和运用Java的继承机制,从而在实际项目中实现更灵活、可扩展的代码结构。
- **状态和行为的继承**:子类会继承父类的所有非私有成员变量(状态)和方法(行为)。这包括父类中的公共(public)、受保护(protected)以及默认(缺省)访问级别的成员。 - **重写与新增**:子类不仅可以保留...
Java继承机制详解 Java是一种面向对象的编程语言,它支持继承机制,即一个类可以继承另一个类的特征和行为。继承机制是实现代码重用和提高开发效率的重要手段。 什么是继承? 继承是一种创建新类的机制,新类可以...
* 类和对象的概念、类的组成部分:成员变量、构造方法、普通方法。 * 抽象类和接口的概念、抽象类和接口的区别。 继承和多态 -------------- * 继承的概念、继承的实现、继承的特点。 * 多态的概念、多态的实现、...
在这个"java关于继承的思维导图(Xmind)"中,我们可以看到作者对Java继承机制的详细梳理。 1. **类的层次结构** - 在Java中,类可以看作是对象的模板,通过继承,子类可以共享父类的特性。这构建了一个类的层次结构...
继承是Java语言的一种机制,允许开发者创建一个新的类,而这个新的类继承了已有的类的所有成员变量和方法。继承的好处是可以重用代码,节省时间和空间,同时也提高了代码的可读性和维护性。在Java语言中,继承是通过...
Java的继承机制是面向对象编程中的核心特性,它允许一个类(子类)从另一个类(父类)继承属性和方法,从而实现代码的复用和扩展。在Java中,继承具有以下特点: 1. 单继承:不同于C++等语言,Java仅支持单继承,即...
在Java中,我们通过访问修饰符(如private、public、protected)来控制成员变量的访问权限,实现封装。同时,getter和setter方法用于在类的外部获取或修改私有变量的值,这是Java中实现封装的常见方式。 **继承**则...