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();
}

}

目录
相关文章
|
3月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
156 1
|
3月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
|
9月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
169 13
|
3月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
134 0
|
4月前
|
安全 Java 编译器
Java面向对象
本文深入讲解了Java面向对象编程(OOP)的四大特性:封装、继承、多态与抽象,以及方法的设计与使用。通过示例展示了如何用类和对象组织代码,提升程序的可维护性与扩展性。
|
5月前
|
存储 Java 测试技术
Java基础 - 面向对象
面向对象编程是Java的核心,包含封装、继承、多态三大特性。封装隐藏实现细节,提升代码可维护性与安全性;继承实现类间IS-A关系,支持代码复用;多态通过继承、重写与向上转型,实现运行时方法动态绑定,提升系统扩展性与灵活性。
|
7月前
|
人工智能 Java 编译器
Java:面向对象
本文介绍了Java编程中的核心概念,包括包的命名规范与自动导入机制、构造方法的特点与使用、`this`和`super`关键字的作用、继承的基本规则、访问权限的设置、封装的意义、多态的实现原理以及`static`关键字的用法。通过详细解析每个知识点,并结合代码示例,帮助读者深入理解Java面向对象编程的核心思想与实践技巧。内容适合初学者及进阶开发者学习参考。
176 0
|
9月前
|
缓存 安全 Java
java面试-基础语法与面向对象
本文介绍了 Java 编程中的几个核心概念。首先,详细区分了方法重载与重写的定义、发生阶段及规则;其次,分析了 `==` 与 `equals` 的区别,强调了基本类型和引用类型的比较方式;接着,对比了 `String`、`StringBuilder` 和 `StringBuffer` 的特性,包括线程安全性和性能差异;最后,讲解了 Java 异常机制,包括自定义异常的实现以及常见非检查异常的类型。这些内容对理解 Java 面向对象编程和实际开发问题解决具有重要意义。
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
887 37
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
492 4