`

Java继承覆盖小结

阅读更多

1、关于构造函数:子类需要继承父类的构造函数。

 

      1)如果父类无构造函数或有无参构造函数,则调用子类构造函数前会自动调用父类的无参构造函数。

      2)如果父类只有有参数的构造函数,则子类必须显式调用父类的构造函数,否则编译出错。

      3)如果父类同时具有有参和无参的构造函数,则调用子类构造函数前会自动调用父类的无参构造函数。

 

2、成员变量覆盖:子类不能覆盖父类的成员变量,但可以隐藏父类的成员变量。

 

      1)子类“覆盖”父类的成员变量时,父类的方法使用的永远是父类的成员变量,子类的方法使用的永远是子类的成员变量(除非显示使用super关键字来引用父类的成员变量)。

 

3、方法覆盖:实例方法被覆盖,静态方法被隐藏。

 

      1)子类能覆盖父类的实例方法,不能覆盖静态或终态方法。

      2)试图用子类的静态方法隐藏父类中同样标识的实例方法是不合法的,编译器将会报错。

      3)试图用子类的实例方法覆盖父类中同样标识的静态方法也是不合法的,编译器会报错。

      4)抽象方法必须在具体类中被覆盖。

 

4、实例

class SuperClass {
	private int number;
	public SuperClass() {
		this.number = 0;
	}
	public SuperClass(int number) {
		this.number = number;
	}
	public int getNumber() {
		number++;
		return number;
	}
}
class SubClass1 extends SuperClass {
	public SubClass1(int number) {
		super(number);
	}
}

class SubClass2 extends SuperClass {
	private int number;
	public SubClass2(int number) {
		super(number);
	}
}

public class SubClass extends SuperClass {
	private int number;
	public SubClass(int number) {
		super(number);
	}
	public int getNumber() {
		number++;
		return number;
	}
	public static void main(String[] args) {
		SuperClass s = new SubClass(20);
		SuperClass s1 = new SubClass1(20);
		SuperClass s2 = new SubClass2(20);
		System.out.println(s.getNumber());
		System.out.println(s1.getNumber());
		System.out.println(s2.getNumber());
		//结论一:多态时,当子类覆盖了父类的方法,使用子类覆盖的方法
		//结论二:当子类覆盖父类的成员变量时,父类方法使用的是父类的成员变量,子类方法使用的是子类的成员变量
	}
}

    执行输出:

    1

     21

     21

 

分享到:
评论

相关推荐

    Java中类的继承学习小结

    下面是对"Java中类的继承学习小结"的详细讲解。 首先,类的继承使用关键字`extends`来实现。子类(也称为派生类)声明时,会指定一个父类(或超类): ```java public class DerivedClass extends BaseClass { //...

    Java方法继承、方法重载、方法覆盖小结.doc

    Java 方法继承、方法重载、方法覆盖、小结 Java 编程语言中,方法继承、方法重载、方法覆盖是三个重要的概念,它们在软件开发中发挥着重要作用。 方法继承 方法继承是 Java 编程语言的一种机制,允许一个类继承另...

    Java学习之继承小结

    在深入探讨Java中的继承这一核心概念之前,我们首先需理解其基本定义与作用。继承是面向对象编程(OOP)的四大基本特性之一,它允许一个新的类(子类)继承现有类(父类)的属性和方法,从而实现代码复用,减少冗余...

    详解java接口、继承和多态

    #### 四、小结 - **接口**:定义了一组方法签名,由其他类实现具体的方法体。 - **继承**:支持代码复用,子类可以继承父类的属性和方法,并可以扩展或覆盖父类的功能。 - **多态**:允许父类引用指向子类对象,...

    java异常小结

    异常在Java中被分为两类:Error和Exception,它们都继承自顶级类`Throwable`。Error类及其子类通常表示Java运行环境的严重问题,如内存溢出或虚拟机错误,这些错误通常无法恢复,程序员应尽量避免抛出Error。...

    JAVA程序:接口小结

    本文档“JAVA程序:接口小结”很可能是对Java接口的全面总结,包含了相关的代码示例,帮助学习者深入理解和运用接口。 接口在Java中的主要特性包括: 1. **接口是完全抽象的**:接口中的所有方法默认都是抽象的,...

    java笔试题小结

    ### Java笔试题小结 #### 1. Java 字符串(String) **问题**: String 类的特点是什么?与 StringBuffer 的区别? **分析与解答**: `String` 类在 Java 中是不可变的,即一旦创建了一个字符串对象,其内容就不能...

    第05章 面向对象(下) 02 继承小结

    面向对象编程是Java语言的核心特性之一,而继承作为面向对象的三大特性(封装、继承、多态)之一,是实现代码复用和扩展性的重要手段。在本章中,我们将深入探讨Java中的继承概念,以及它如何帮助我们构建更加灵活...

    java面向对象编程总结

    Java 支持单继承,即一个子类只能有一个直接父类,但可以通过接口实现多继承的效果。`Object` 类是所有 Java 类的顶级父类。类的访问权限修饰符决定了子类能访问父类的哪些成员。方法的重写(覆盖)是在子类中改进或...

    Java学习IO流小结--字符流

    ### Java学习IO流小结——字符流 #### 知识点概述 在Java中,处理文件和数据流是一项基本而重要的任务。IO流是Java语言中处理输入/输出的重要工具,它包括字节流和字符流两大类。本文将重点讨论字符流的相关概念...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    JAVA的重载和覆盖(论文)

    ### 小结 重载和覆盖虽然都涉及到方法的名称重复使用,但应用场景和目的完全不同。重载关注于方法参数的多样性,用于提供多种实现同一功能的途径;而覆盖则专注于在继承上下文中提供更具体或更优化的实现,强调的是...

    java画图板的总结

    Canvas类继承自Component,允许程序员直接在屏幕上进行像素级别的操作,创建自定义的图形和交互式界面。这篇博客的文章链接虽然无法直接查看,但从标题我们可以推测它可能是关于Java Canvas的使用经验和技巧的总结。...

    Java测试新技术TestNG和高级概念.part1

    1.5 本章小结 第2章 测试设计模式 2.1 针对失败而测试 2.2 工厂 2.3 数据驱动测试 2.4 异步测试 2.5 测试多线程代码 2.6 性能测试 2.7 模拟和桩 2.8 依赖的测试 2.9 继承和annotation范围 2.10 测试分组 2.11 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    java面试题目精选

    - **1.4 本章小结** - 对求职过程进行了总结,并强调了成功应聘的关键因素。 #### 二、Java试题篇 - **2.1 Java概述和开发环境** - **理解Java**:介绍Java的历史背景、特点及其应用场景。 - **构建Java开发...

    疯狂JAVA讲义

    1.9 本章小结 22 本章练习 22 第2章 理解面向对象 23 2.1 面向对象 24 2.1.1 结构化程序设计简介 24 2.1.2 程序的三种基本结构 25 2.1.3 面向对象程序设计简介 27 2.1.4 面向对象的基本特征 28 2.2 UML...

    java私塾初级目录word

    每一章节的小结和编程作业示例讲解是巩固学习成果的关键环节,通过实际操作加深理解并提高编程能力。在学习过程中,实践和理解每个知识点的原理是至关重要的,同时,不断地编程练习能够帮助初学者逐步熟悉和掌握Java...

    Java面向对象教程

    以上内容只是Java面向对象编程的一小部分,马士兵教授的教程会更深入地探讨这些概念,并结合实例进行讲解,帮助开发者更好地理解和应用面向对象技术。通过学习和实践,你可以掌握创建高效、可维护的Java应用程序的...

    java中this&super的用法小结.doc

    ### Java中this&super的用法小结 #### 一、`this`关键字的理解与运用 **1.1 使用 `this` 引用成员变量** `this` 关键字主要用于解决成员变量与局部变量(如方法参数)同名时的混淆问题。在类的构造方法或方法中,...

Global site tag (gtag.js) - Google Analytics