Java学习笔记------继承

 继承

Java中提供了一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立继承关系

如图,Student和Teacher类中除了study()和teacher()两个成员函数不同,其他重复了,如果直接写的话,代码量会更多,我们现在可以构建一个Person类,包括重复的内容

格式为:public class Student extends Person{}

 Student称为子类(派生类),Person称为父类(基类或超类)。

继承好处:可以把多个子类中的重复代码抽取到父类中,提高代码复用性

子类可以在父类的基础上,增加其他功能,使子类更强大

设计继承结构

当类和类之间,存在相同的内容,并满足子类是父类中的一种,就可以考虑使用继承,来优化代码

继承的特点

Java只支持单继承,不支持多继承,但支持多层继承

多层继承:子类A继承父类B,父类B可以继承父类C

 子类继承内容

子类不会继承父类构造方法

例如:

public class test{public static void main(String[] args){Zi z=new Zi();Zi z=new Zi("zhangsan",23);   }  
}
class Fu{String name;int age;public Fu(){}public Fu(String name,int age){this.name=name;this.age=age;}}
class Zi extends Fu{
}

以上代码中子类不会继承父类构造方法,所以 Zi z=new Zi("zhangsan",23)实现不了

但是Zi z=new Zi()能实现,因为Java默认给子类写了一个空参构造

子类会继承父类成员变量,private不能使用

public class test{public static void main(String[] args){Zi z=new Zi();z.age=30;   }  
}
class Fu{String name;private int age;}}
class Zi extends Fu{
}

age是私有的,改不了

成员方法是否被继承

虚方法表可以(非private、非static、非final),其他不能

 继承中成员变量的访问特点

就近原则:谁近用谁

class Fu{String name="Fu";}}
class Zi extends Fu{String name="Zi";public void ziShow(){String name="ziShow";System.out.println(name);}
}

会打印ziShow

class Fu{String name="Fu";}}
class Zi extends Fu{String name="Zi";public void ziShow(){String name="ziShow";System.out.println(name);System.out.println(this.name);System.out.println(super.name);}}

this是本类,打印Zi

super表示父类,打印Fu

继承中成员方法的访问特点

就近原则:先查看本类,有调用本类,无调用继承下来的

super直接调用父类中的

方法重写

当父类方法不能满足子类现在的需求,需要进行方法重写

书写格式:在继承体系中,子类出现了和父类中一模一样的方法声明

@Override是放在重写后的方法上,校验子类重写时语法是否正确

@Override
public void ziShow(){}

重写即子类覆盖从父类继承的方法

重写方法名称、形参列表必须与父类中的一致,子类的访问权限必须大于等于父类

私有方法和静态方法不能被重写

继承中的构造方法的访问特点

父类构造方法不会被子类继承

子类中所有构造方法默认先访问父类中的无参构造,在执行自己

子类构造方法第一行语句默认是super(),

如果想调用父类有参构造,必须手动写super进行调用

例如:

public Student(String name,int age){super(name,age);
}

以上代码写在子类里面,调用父类的有参构造

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

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

相关文章

会声会影2024最新官方旗舰版下载及功能讲解

会声会影支持的视频格式非常多样,包括但不限于:AVI、MPEG-1、MPEG-2、AVCHD、MPEG-4、H.264、BDMV、DV、HDV、DivX、QuickTime、RealVideo、Windows Media Format、MOD(JVC MOD 文件格式)、M2TS、M2T、TOD、3GPP、3GPP2 等。 这些…

【LNMP】云导航项目部署及环境搭建(复杂)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、项目介绍1.1项目环境架构LNMP1.2项目代码说明 二、项目环境搭建2.1 Nginx安装2.2 php安装2.3 nginx配置和php配置2.3.1 修改nginx文件2.3.2 修改vim /etc/p…

基于PostGIS的慢查询引起的空间索引提升实践

目录 前言 一、问题定位 1、前端接口定位 2、后台应用定位 3、找到问题所在 二、空间索引优化 1、数据库查询 2、创建空间索引 3、geography索引 4、再看前端响应 总结 前言 这是一个真实的案例,也是一个新入门的工程师很容易忽略的点。往往在设计数据库的…

vue2+element医院安全(不良)事件报告管理系统源代码

目录 安全不良事件类型 源码技术栈 医院安全(不良)事件报告管理系统采用无责的、自愿的填报不良事件方式,有效地减轻医护人员的思想压力,实现以事件为主要对象,可以自动、及时、实际地反应医院的安全、不良、近失事件…

C++之类作用域

目录 1、全局作用域 2、类作用域 2.1、设计模式之Pimpl 2.2、单例模式的自动释放 2.2.0、检测内存泄漏的工具valgrind 2.2.1、可以使用友元形式进行设计 2.2.2、内部类加静态数据成员形式 2.2.3、atexit方式进行 2.2.4、pthread_once形式 作用域可以分为类作用域、类名…

Kafka入门二——SpringBoot连接Kafka示例

实现 1.引入maven依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache…

RK3568平台开发系列讲解(Linux系统篇)SPI 客户端通信

🚀返回专栏总目录 文章目录 一、spi_transfer二、spi_message三、初始化沉淀、分享、成长,让自己和他人都能有所收获!😄 SPI I/O模型由一组队列消息组成。我们提交一个或多个struct spi_message结构时,这些结构以同步或异步方式处理完成。单个消息由一个或多个struct sp…

Less预处理器教程

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学&#xff0c;可以点心心支持一下哈 一、Less介绍 less官方文档 lesscss.org/ less中文文档 less.bootcss.com/ less是一种css预处理器&#xff0c;它扩展了css语言&#xff0c…

Linux笔记--文件与目录

ls /--查看根目录 一、介绍 1.目录结构 // 5.3 FHS (Filesystem Hierarchy Standard ) 文件层次结构标准 (标准规范每个特定的目录应该放什么 bin:全称 binary&#xff0c;含义是二进制。该目录中存储的都是一些二进制文件&#xff0c;文件都是可以被运行的。(一些最经常使…

【科研基础|课程】矩阵分析 持续更新

哈尔滨工业大学 矩阵分析 全72讲 主讲-严质彬 视频教程 文章目录 第一章 线性空间与线性映射 第一章 线性空间与线性映射 p1 域的定义&#xff1a;可以进行加减乘除四种运算的运算系统。举例&#xff1a;有理数域 Q \mathbb{Q} Q&#xff0c;实数域 R \mathbb{R} R&#xf…

vulnhub靶场之driftingblues-1

一.环境搭建 1.靶场描述 get flags difficulty: easy about vm: tested and exported from virtualbox. dhcp and nested vtx/amdv enabled. you can contact me by email (it should be on my profile) for troubleshooting or questions. 2.靶场下载 https://www.vulnhub.…

选择适合你的编程语言

引言 在当今瞬息万变的技术领域中&#xff0c;选择一门合适的编程语言对于个人职业发展和技术成长至关重要。每种语言都拥有独特的设计哲学、应用场景和市场需求&#xff0c;因此&#xff0c;在决定投入时间和精力去学习哪种编程语言时&#xff0c;我们需要综合分析多个因素&a…