`

JAVA继承在处理成员变量和方法时是有区别

 
阅读更多
  1. JAVA继承在处理成员变量和方法时是有区别的:
    1.方法的行为总是表现出它们实际类型的行为;
    2.实例变量总是表现出声明这些变量所用类型的行为。
  2. 如果在子类重写了父类方法,就意味着子类里定义的方法彻底覆盖了父类里的同名方法,系统将不可能把父类里的方法转移到子类中,对于实例变量则不存在这样的现象,即使子类中定义了与父类完全同名的实例变量,这个实例变量依然不可能覆盖父类中定义的实例变量。因为继承成员变量和继承方法之间存在这样的差别,所以对于一个引用类型的变量而言,当通过该变量访问它所引用的对象的实例变量时,该实例变量的值取决于声明该变量时类型,当通过该变量来调用它所引用的对象的方法时,该方法行为取决于它所实际引用的对象类型。
  3. 代码如下:
    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> 
     * <br/>Copyright (C), 2001-2010, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author  Yeeku.H.Lee kongyeeku@163.com
     * @version  1.0
     */
    
    class Base
    {
    	int count = 2;
    	public void display()
    	{
    		System.out.println(this.count);
    	}
    }
    class Derived extends Base
    {
    	int count = 20;
    	@Override
    	public void display()
    	{
    		System.out.println(this.count);
    	}
    }
    public class FieldAndMethodTest
    {
    	public static void main(String[] args) 
    	{
    //		//声明、创建一个Base对象
    //		Base b = new Base();
    //		//直接访问count实例变量和通过display访问count实例变量
    //		System.out.println(b.count);
    //		b.display();
    		//声明、并创建一个Derived对象
    		Derived d = new Derived();
    		//直接访问count实例变量和通过display访问count实例变量
    		System.out.println(d.count);
    //		d.display();
    //		//声明一个Base变量,并将Derived对象赋给该变量
    //		Base bd = new Derived();
    //		//直接访问count实例变量和通过display访问count实例变量
    //		System.out.println(bd.count);
    //		bd.display();
    //		//让d2b变量指向原d变量所指向的Dervied对象
    		Base d2b = d;
    		//访问d2b所指对象的count实例变量
    		System.out.println(d2b.count);
    	}
    }
    
     
分享到:
评论

相关推荐

    方法和变量在继承时的覆盖和隐藏问题

    在Java编程语言中,继承是面向对象程序设计的一个核心概念,它允许创建一个类(子类)来继承另一个类(父类)的属性和行为。继承主要通过方法和变量来实现代码的复用与扩展。然而,在继承过程中,可能会出现方法和...

    java 重载,重写以及继承,多态的区别

    例如,在上面的例子中,`Triangle` 和 `Rectangle` 类都继承自 `Shape` 类,它们继承了 `Shape` 类的成员变量和方法。 多态(Polymorphism) 多态是指父类可以调用子类的方法,而不需要知道子类的具体类型。多态的...

    Java方法继承、方法重载、方法覆盖总结

    它们之间既有关联又有区别,掌握这些概念对于深入理解面向对象编程有着至关重要的作用。 #### 一、Java方法继承 **方法继承**是指在一个类继承另一个类时,子类会自动获得父类的所有非私有方法。如果子类没有对...

    Java继承后访问成员的特点.docx

    当我们谈论Java继承后访问成员的特点时,主要涉及到以下几个关键知识点: 1. **成员变量的访问**: - 当子类对象访问成员变量时,首先会在子类中查找是否有定义的变量。如果找到,就会使用子类中的变量;如果没有...

    java继承作业.pdf

    在本文中,我们将讨论Java继承的基本概念和实现方法,並以三个实例来演示继承的应用。 一、new A 和 A a=new A()的区别 在Java中,new关键字用于创建对象,而A a=new A()是将对象赋值给变量a。在上面的代码中,...

    徐葳《40小时掌握java语言之04继承》内部教材

    理解继承在Java中的具体实现,包括继承的特点、成员变量、函数和构造函数的处理,对于编写清晰、可维护的面向对象程序至关重要。在实际开发中,合理使用继承可以极大地提高开发效率和代码质量。

    JAVA继承_接口_抽象类等练习.doc

    **概念:** 在Java中,一个类可以通过`extends`关键字继承另一个类,从而获得父类的所有公共成员变量和方法。 **选择题示例:** 第11题中,正确答案是D选项:“class B extends A”。这是因为Java中类的继承通过`...

    继承和接口和java访问权限修饰符总结.doc

    继承的特点是:子类可以继承父类的所有成员变量和方法,并且可以对父类的方法进行重写或重载。 二、方法重载和方法重写 方法重载是指在同一个类中定义了两个以上的同名的方法,但是它们拥有不同的参数列表。方法...

    Java 深入理解嵌套类和内部类

    在静态嵌套类内部,不能访问外部类的非静态成员变量,这是由 Java 语法中“静态方法不能直接访问非静态成员”所限定。若想访问外部类的变量,必须通过其他方法解决。由於这个原因,静态嵌套类使用很少。 三、非静态...

    java中final和static的区别

    4. 用 private 修饰的 static 成员变量和成员方法,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用),但是不能在其他类中通过类名来直接引用,这一点很...

    JAVA面向对象基础测试题-继承-封装-多态等测试题.docx

    **解析**:在这个例子中,`add` 方法接收的是一个基本类型的参数,因此当 `score` 被传入 `add` 方法时,实际上传递的是一个值的拷贝。在 `add` 方法内部对 `score` 进行操作并不会影响到主函数中的 `score` 值。...

    类存储数据与变量和数组的区别(论文)

    - **数据表现形式**:变量有八种基本数据类型;数组可以是任何类型;类定义了对象的状态和行为。 - **内存分配**:变量在声明时会根据数据类型自动分配内存空间;数组在使用`new`关键字时分配内存空间;类在创建对象...

    Java中this与super的区别

    或者说用来引用被屏蔽的成员变量和成员成员方法。 作为构造函数使用 super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。 this(参数):调用本类中另一种形式的构造函数(应该为...

    \\java类、抽象类、接口、继承和对象解析 .doc

    Java 类、抽象类、接口和继承是面向对象编程的核心概念,它们构成了 Java 语言的基石。在 Java 中,类是用来封装数据和行为的结构,而对象则是类的实例,具有具体的属性和行为。 1. **类与对象的区别** 类是模板...

    第02章 Java编程基础 01 变量与标识符

    在Java中,变量有其特定的生命周期,从声明到初始化,再到使用和最后的销毁。变量的声明需要指定类型,例如int、double、String等,这决定了变量可以存储的数据种类。变量名应遵循一定的命名规则:只能包含字母、...

    实验三:Java类与对象

    此外,我们还探讨了成员方法和类方法的区别。成员方法属于类的实例,而类方法(也称为静态方法)属于类本身,不依赖于类的任何实例。例如,`Monkey`类中的`climbTree()`是成员方法,而`main()`方法是类方法。 函数...

    浅析JAVA与C++的区别.pdf

    多继承可以使得子类继承多个父类的成员变量和方法,而单继承则只能继承一个父类的成员变量和方法。 二、构造函数和析构函数 C++中引入构造函数的同时也引入了析构函数,而Java却没有析构函数。析构函数在对象超出...

    JAVA数据库笔试题答案在最后.doc

    6. 在 Java 中,构造方法不能被声明为 protected,因为 protected 访问修饰符是用来控制成员变量和成员方法的访问权限的,而不是用来控制构造方法的访问权限的。 7. 在 Java 中,数组有 length 属性,而不是 length...

    java常量变量表达式

    在Java中,常量变量表达式是编程时常见的概念,它们涉及到如何定义、使用和管理不可变的数据。 1. 常量变量: 在Java中,常量是不可更改的值,通常使用关键字`final`来声明。例如: ```java final int MAX_SIZE = ...

    java期末考试简答题

    "Java期末考试简答题" Java 中的 final、finally、finalize 的...这些知识点涵盖了 Java 中的基本概念,包括变量、方法、异常、线程同步、事件监听器、构造方法、接口和变量的分类等,都是 Java 开发必备的知识点。

Global site tag (gtag.js) - Google Analytics