关于java的继承

关于java的继承

我们在上一篇文章中,了解到了封装,我们本篇文章来介绍一下面向对象的第二大特点,继承,还是遵循结合现实生活中的实际情况,理解着去学习,能更好的加深印象😀。

一、继承

  • 继承的本质:是对某一批类的抽象,从而实现对现实世界更好的建模。
  • extends的意思是“扩展”,子类是父类的扩展。

我们新建一个软件包,然后在这个里面,新建一个人类,学生类,老师类。

package oop.Demo05;
//Person 人  :  父类
public class Person 
{}

我们知道,学生类也是人类,所以我们新建一个学生类,然后继承人类。

package oop.Demo05;
//学生 is 人  :  派生类(子类)
public class Student extends Person 
{}

老师类也是人类,我们再新建一个老师类,然后继承人类。

package oop.Demo05;
//Teacher is 人  : 派生类(子类)
public class Teacher extends Person
{}
  • java类中,只有单继承,没有多继承!

  • 继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖,组合,聚合等。

  • 继承关系的两个类,一个是子类(派生类),一个为父类(基类),子类继承父类,使用关键字extends来表示。

  • 子类和父类之间,从意义上讲应该具有“ is a”的关系。

  • 子类可以继承父类的所有方法。

1、我们在父类(Person类)中,定义一个方法,“说你好”的方法。

package oop.Demo05;
//Person 人
public class Person {public void say(){System.out.println("Hello");}
}

2、我们的子类(Student类)继承了父类,所以在Student类里面我们什么方法都不写。

package oop.Demo05;
//学生 is 人  :  派生类(子类)
public class Student extends Person 
{}

3、我们通过main方法,来new一个Student类的对象,看是否可以调用方法。

package oop.Demo02;import oop.Demo05.Student;public class Application {public static void main(String[] args) {Student student = new Student();student.say();//发现这里可以直接调用}
}

我们执行以下代码,可以看到输出结果。

Hello进程结束.......

4、不光子类可以继承父类的方法,还可以继承属性,但是前提是,父类中的属性是public

package oop.Demo05;
//Person 人
public class Person {public int money=10_0000_0000;public void say(){System.out.println("Hello");}
}

我们输出一下student.money。

package oop.Demo02;import oop.Demo05.Student;public class Application {public static void main(String[] args) {Student student = new Student();System.out.println(student.money);}
}

我们执行以下代码,可以看到输出结果。

1000000000进程结束.......

5、但是如果把修饰符public公有的,换成private私有的,继承了也无法调用。

二、四个修饰符

  • public(公有的)

  • default(默认的)

  • protected(受保护的,protected与private基本相似,只有在继承时有较大的区别。继承的类可以访问protected成员,但是不能访问private成员。)

  • private(私有的)

  • 虽然私有的属性无法被继承,但是可以用get set方法,去变相调用。

三、object

我们在子类或者父类里面,按下Ctrl+H 就会跳转到继承结构。

在这里插入图片描述

在这里我们发现,Person上面还有一个类,Object,Person类继承了Object类。

如果我们在Person中,什么方法也不写,但是创建一个person对象的时候,仍然可以使用方法,如下代码。

package oop.Demo02;import oop.Demo05.Person;public class Application {public static void main(String[] args) {Person person = new Person();person.hashCode();//依旧可以使用方法}
}
  • 在java中,所有的类,都默认直接或者间接继承Object类

  • 继承里面还有两个重点,一个super,一个方法的重写,我们放在后边详细去说明😀。

  • java类中,只有单继承,没有多继承!

  • 一个儿子只能有一个爸爸,一个爸爸可以有多个儿子,就是学生类可以继承人类,但是人类可以被老师类继承。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/415198.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flink 1.18 sql gateway /sql gateway jdbc

一 sql gateway 注意 之所以直接启动gateway 能知道yarn session 主要还是隐藏的配置文件,但是配置文件可以被覆盖,多个session 保留最新的applicationid 1 安装flink (略) 2 启动sql-gatway(sql-gateway 通过官网介绍只能运行…

对象存储, 开源MinIO docker-compose.yml 文件

文章目录 python SDK 文档地址:docker-compose.yml 文件控制台使用:应用服务中使用样例: python SDK 文档地址: https://min.io/docs/minio/linux/developers/python/API.html docker-compose.yml 文件 version: 3services:min…

设计模式⑦ :简单化

文章目录 一、前言二、Facade 模式1. 介绍2. 应用3. 总结 三、Mediator 模式1. 介绍2. 应用3. 总结 一、前言 有时候不想动脑子,就懒得看源码又不像浪费时间所以会看看书,但是又记不住,所以决定开始写"抄书"系列。本系列大部分内容…

为 OpenCV 编写文档(二)

常用命令 这里通过简短的示例描述了最常用的 doxygen 命令。有关可用命令的完整列表和详细说明,请访问命令参考。 基本命令 brief - 带有简要实体描述的段落 param - 函数参数的描述。 多个相邻语句合并到一个列表中。如果在实际函数签名中找不到具有此名称的参数…

亚马逊卖食品有什么具体要求?亚马逊卖食品好做吗?—站斧浏览器

亚马逊卖食品有什么具体要求? 首先,亚马逊要求卖家提供食品的详细信息,包括产品描述、成分表、营养信息和包装规格等。这些信息对于消费者来说至关重要,它们可以帮助消费者了解产品的特点和质量,并做出明智的购买决策…

51单片机原理及应用——张毅刚版本代码全集可复制

从左到右的流水灯的制作(重点) #include <reg51.h> #include <intrins.h> //移位函数的头文件 unsigned int j; void Delay(unsigned int i) // 延时函数 {while(i--) // 注意这里是i--{for(j 0;j < 120;j); // 注意这里是120} }void main() {P1 0xFE;while(1…

INS-06003错误处理

在麒麟V10操作系统上安装Oracle RAC 19C&#xff0c;安装GI的建立互信步骤中&#xff0c;遇到INS-06003错误&#xff1a; [INS-06003] Failed to setup password SSH connectivity with following node(s) 查看详细信息&#xff1a; PRVG-11001: PRCZ-2136: PRCZ-2006: 此时在操…

leetcode82. 删除排序链表中的重复元素 II

文章目录 题目思路1复杂度Code2 思路2复杂度2Code2 题目 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;…

SpringBoot Redis入门(四)——Redis单机、哨兵、集群模式

单机模式&#xff1a;单台缓存服务器&#xff0c;开发、测试环境下使用&#xff1b;哨兵模式&#xff1a;主-从模式&#xff0c;提高缓存服务器的高可用和安全性。所有缓存的数据在每个节点上都一致。每个节点添加监听器&#xff0c;不断监听节点可用状态&#xff0c;一旦主节点…

CTF CRYPTO 密码学-1

题目名称&#xff1a;enc 题目描述&#xff1a; 压缩包中含两个文件&#xff1a;一个秘钥d.dec&#xff0c;一个密文flag.enc 解题过程&#xff1a; Step1&#xff1a;这题是一个解密他题目&#xff0c;尝试openssl去ras解密 工具简介 在Kali Linux系统中&#xff0c;openss…

深入理解 Kubernetes Ingress:路由流量、负载均衡和安全性配置

Kubernetes Ingress 是 Kubernetes 集群中外部流量管理的重要组件。它为用户提供了一种直观而强大的方式&#xff0c;通过定义规则和配置&#xff0c;来控制外部流量的路由和访问。 1. 什么是 Ingress&#xff1f; 在 Kubernetes 中&#xff0c;Ingress 是一种 API 资源&#…

C语言--质数算法和最大公约数算法

文章目录 1.在C语言中&#xff0c;判断质数的常见算法有以下几种&#xff1a;1.1.试除法&#xff08;暴力算法&#xff09;&#xff1a;1.2.优化试除法&#xff1a;1.3.埃拉托色尼筛法&#xff1a;1.4.米勒-拉宾素性检验&#xff1a;1.5.线性筛法&#xff1a;1.6.费马小定理&am…