Java 25天基础-DAY 07-面向对象-继承子父类中变量的特点-函数的另一个特性重写(覆盖)

简介: Java 25天基础-DAY 07-面向对象-继承子父类中变量的特点-函数的另一个特性重写(覆盖)

继承:
1、提高了代码的复用性
2、让类与类之间产生了关系,有了这个关系,才有了多态的特性。

注意:
千万不要为了获取其他类的功能,简化代码而继承。
必须是类与类之间有所属关系才可以继承,所属关系is a(谁是谁的一种);

java语言中,Java只支持单继承,不支持多继承。
因为多继承容易带来安全隐患:当多个父类中定义了相同的功能,当功能内容不同时,子类对象不确定要运行那一个。
但是Java保留了这种机制,并用另一种体现形式来完成表示,“多实现”

Java支持的多层继承:
也就是一个继承体系

如何使用一个继承体系中的功能呢?
想要使用体系,先查阅体系中父类的描述。因为父类中定义的是该体系中的共性功能。
通过了解共性功能就可以知道该体系的基本功能。
那么这个体系基本就能使用了。
那么在具体调用时要创建最子类的对象,为什么呢?因为有可能父类有可能不能创建对象。
或者创建子类对象可以使用更多的功能,包括基本的也包括特有的。

简单一句话,查阅父类功能,创建子类对象功能。

聚集关系(谁里面有谁):has a

聚合:球员和球队的关系,球员是球队的一员。

组合:手是人身体的一部分。关系比聚合的紧密程度更进。
clipboard

例1:简单继承关系
clipboard

例2:父类对象的引用,super关键字。
clipboard

变量的引用:
this代表的是本类的对象的引用;
super代表的是父类对象的引用;
如果子类中出现非私有的同名成员变量时,子类要访问本类中的变量,用this;子类要访问父类中的同名变量时,用super。super和this的使用几乎一致。

例:在zi对象建立时,会先初始化fu的对象。
clipboard

例2:当子类中没有对象时,会继承父类中的对象。
clipboard

函数的另一个特性:重写(覆盖)
当子类出现和父类一模一样的函数时,
当子类对象调用该函数,会运行子类函数的内容。
如同父类的函数被覆盖一样。

当子类继承父类,沿袭了父类的功能,到子类中,但是子类虽然具备该功能,但是该功能内容却和
父类不一致,这时没有必要定义新功能,而是使用覆盖特性,保留父类的功能定义,并重写新
功能。
1、子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖。
2、静态只能覆盖静态。

例1:保留父类的功能,并重写功能内容。
clipboard

函数重载:只看同名函数的参数列表。
函数重写:子父类方法要一模一样。

例2:覆盖的应用给Tel类增加System.out.println("pic")功能,而不修改Tel类。
class Tel
{

void show()
{
    System.out.println("number");
}

void showname()
{
    System.out.println("name");
}

}
class NewTel extends Tel
{

void show()
{
    //System.out.println("number");可以使用super.show();
    super.show();
    System.out.println("pic");
}

}
class jicheng
{

public static void main(String[] args) 
{
    NewTel dis = new NewTel();
    dis.show();
    dis.showname();
}

}

目录
相关文章
|
7天前
|
Java 编译器
Java——类与对象(继承和多态)
本文介绍了面向对象编程中的继承概念,包括如何避免重复代码、构造方法的调用规则、成员变量的访问以及权限修饰符的使用。文中详细解释了继承与组合的区别,并探讨了多态的概念,包括向上转型、向下转型和方法的重写。此外,还讨论了静态绑定和动态绑定的区别,以及多态带来的优势和弊端。
20 9
Java——类与对象(继承和多态)
|
7天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
5天前
|
机器学习/深度学习 人工智能 安全
python和Java的区别以及特性
Python:适合快速开发、易于维护、学习成本低、灵活高效。如果你需要快速上手,写脚本、数据处理、做点机器学习,Python就是你的首选。 Java:适合大型项目、企业级应用,性能要求较高的场景。它类型安全、跨平台能力强,而且有丰富的生态,适合更复杂和规模化的开发。
14 3
|
14天前
|
存储 Java 开发者
【Java新纪元启航】JDK 22:解锁未命名变量与模式,让代码更简洁,思维更自由!
【9月更文挑战第7天】JDK 22带来的未命名变量与模式匹配的结合,是Java编程语言发展历程中的一个重要里程碑。它不仅简化了代码,提高了开发效率,更重要的是,它激发了我们对Java编程的新思考,让我们有机会以更加自由、更加创造性的方式解决问题。随着Java生态系统的不断演进,我们有理由相信,未来的Java将更加灵活、更加强大,为开发者们提供更加广阔的舞台。让我们携手并进,共同迎接Java新纪元的到来!
41 11
|
8天前
|
安全 Java Go
面向对象程序设计语言:Java
Java语言语法和C语言和C++语言很接近,很容易学习和使用,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的特性,Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧
25 2
|
12天前
|
安全 Java API
Java 18 概述:新特性一览
Java 18 作为 Java 平台的最新版本,引入了多项令人振奋的新特性和改进,包括模式匹配、记录类型、流库改进、外部函数与内存 API 以及并发处理增强。这些新功能不仅提升了开发者的生产力,还显著增强了 Java 的性能和安全性。本文将详细介绍 Java 18 的主要新特性,并通过代码示例帮助读者更好地理解和应用这些功能。
|
11天前
|
Java
java的继承详解
在 Java 中,继承是一个核心概念,它允许子类 `extends` 父类来重用和扩展其属性与方法。子类可以覆盖父类的方法以改变行为,同时使用 `super` 关键字调用父类的构造方法或方法。虽然 Java 不支持多继承,但可以利用抽象类与接口实现多层继承。这种方式极大地增强了代码的复用性和维护性。
|
17天前
|
存储 Java 程序员
优化Java多线程应用:是创建Thread对象直接调用start()方法?还是用个变量调用?
这篇文章探讨了Java中两种创建和启动线程的方法,并分析了它们的区别。作者建议直接调用 `Thread` 对象的 `start()` 方法,而非保持强引用,以避免内存泄漏、简化线程生命周期管理,并减少不必要的线程控制。文章详细解释了这种方法在使用 `ThreadLocal` 时的优势,并提供了代码示例。作者洛小豆,文章来源于稀土掘金。
|
21天前
|
Java API
Java 8新特性:Lambda表达式与Stream API的深度解析
【7月更文挑战第61天】本文将深入探讨Java 8中的两个重要特性:Lambda表达式和Stream API。我们将首先介绍Lambda表达式的基本概念和语法,然后详细解析Stream API的使用和优势。最后,我们将通过实例代码演示如何结合使用Lambda表达式和Stream API,以提高Java编程的效率和可读性。
|
4天前
|
Java 开发者
Java编程之旅:探索面向对象的力量
【9月更文挑战第16天】在编程的世界中,Java以其强大的面向对象编程特性而闻名。本文将带你走进Java的世界,一起探索类与对象的奥秘,学习如何通过封装、继承和多态性构建健壮的软件系统。无论你是初学者还是有经验的开发者,本文都旨在提供实用的代码示例,帮助你提升Java技能。准备好开始这段旅程了吗?让我们启程吧!