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.mzph.cn/news/702168.shtml

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

相关文章

【摸鱼日常】使用Docker部署2048小游戏

一、本次实践介绍 ​1. 本次实践简介 本次实践部署环境为个人测试环境,快速使用docker部署2048小游戏。 rootWellDone:/home/goodjob# uname -aLinux WellDone 6.5.0-14-generic #14~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Nov 20 18:15:30 UTC 2 x86_64 x86_64…

【深度学习笔记】3_2线性回归的从零实现

注:本文为《动手学深度学习》开源内容,仅为个人学习记录,无抄袭搬运意图 3.2 线性回归的从零开始实现 在了解了线性回归的背景知识之后,现在我们可以动手实现它了。尽管强大的深度学习框架可以减少大量重复性工作,但若…

【C++精简版回顾】12.友元函数

1.友元函数 1.class class MM { public:MM(int age,string name):age(age),name(name){}friend void print(MM mm); private:int age;string name;void print() {cout << age << "岁的" << name << "喜欢你" << endl;} }; f…

Flutter(一):安装和环境配置、创建Flutter项目

安装和环境配置、创建Flutter项目 Flutter 下载方式1方式2 Flutter 环境配置配置国内镜像站点解压 Flutter将 flutter 添加到系统环境变量中运行 flutter doctor来验证安装 Android Studio下载插件创建项目安装 Android SDK 工具在模拟器上运行 Flutter 下载 方式1 全版本&…

Java基于微信小程序的校园二手物品交易系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

计网:动手尝试SMTP交互【利用Telnet发送邮件, 带图片】

文章目录 准备工作发送仅有ascii码的邮件发送图片附件后记 准备工作 1.如图&#xff0c;勾选telnet客户端 2.邮箱开启第三方登录服务 开启服务后&#xff0c;会给一个授权码。授权码是QQ邮箱用于登录第三方客户端/服务的专用密码&#xff0c;适用于登录以下服务&#xff1a;…

React组件详解

React组件分为两大类 1.函数组件 2.类组件&#xff08;最常用&#xff09; 组件化 import ReactDom from "react-dom";// // 1.通过函数创建一个组件 // 2.函数名字必须大写开头 // 3.函数必须有返回值 function Func1() {return <h2>这是一个基础组件</h…

c语言经典测试题5

1.题1 t0; while(printf("*")) { t; if (t<3) break; }关于上述代码描述正确的是&#xff1f; A: 其中循环控制表达式与0等价 B: 其中循环控制表达式与0等价 C: 其中循环控制表达式是不合法的 D: 以上说法都不对 我们来分析一下&#xff1a;printf的返回值…

你真的了解@Async吗?

你真的了解Async吗&#xff1f; 使用场景&#xff1a; 开发中会碰到一些耗时较长或者不需要立即得到执行结果的逻辑&#xff0c;比如消息推送、商品同步等都可以使用异步方法&#xff0c;这时我们可以用到Async。但是直接使用 Async 会有风险&#xff0c;当我们没有指定线程池…

数学建模资料分享

1. 往年各赛题的优秀论文 可以用来参考一下论文是怎么写的。参考论文的结构&#xff0c;格式&#xff0c;思路等等。 链接&#xff1a;https://pan.baidu.com/s/1WG2t4-x9MjtaSgkq4ue5AQ?pwdnlzx 提取码&#xff1a;nlzx --来自百度网盘超级会员V4的分享 2.论文模板 链接&a…

typescript 实现Optional

我们先看下面的这段代码,一个学生接口,里面有成员id,name,age,gender等等成员, 有一个方法graduate,里面要接受一个Student类型的实参 interface Student {id: numbername: stringage: numbergender: string}function graduate(Student: Student) {//...}现在有一个问题,就是学…

LabVIEW燃料电池船舶电力推进监控系统

LabVIEW燃料电池船舶电力推进监控系统 随着全球经济一体化的推进&#xff0c;航运业的发展显得尤为重要&#xff0c;大约80%的世界贸易依靠海上运输实现。传统的船舶推进系统主要依赖于柴油机&#xff0c;这不仅耗能高&#xff0c;而且排放严重&#xff0c;对资源和环境的影响…

【笔记】【电子科大 离散数学】 2.命题

文章目录 数理逻辑定义 命题定义不是命题的例子 原子命题和复合命题定义约定 命题联结词否定联结词定义例子真值表 合取联结词定义例子真值表 析取联结词定义例子 蕴含联结词定义例子真值表 等价联结词定义例子真值表 命题符号化及其应用速查表格优先级复合命题符号化布尔检索演…

15.4K Star,超强在线编辑器

Hi&#xff0c;骚年&#xff0c;我是大 G&#xff0c;公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目&#xff0c;一分钟 get 一个优秀的开源项目&#xff0c;挖掘开源的价值&#xff0c;欢迎关注。 今天推荐一款非常棒的开源实时协作编辑器&#xff0c;可用于多人同时编…

babylonjs中文文档

经过咨询官方&#xff0c;文档已经添加了开源协议。 基于目前babylonjs没有中文文档&#xff0c;为了打造更好的babylonjs生态圈 &#xff0c;特和小伙伴们翻译了官方文档。 相关链接: 欢迎加群&#xff1a;464146715 官方文档 中文文档 Babylonjs案例分享

选座位 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 疫情期间&#xff0c;需要大家保证一定的社交距离&#xff0c;公司组织开交流会议&#xff0c;座位有一排共N个座位&#xff0c;编号分别为[0…N-1]&#xff0c;要…

【SpringBoot】Spring常用注解总结

目录 ⭐spring springmvc和springboot的区别 Autowired 和Resource的区别和联系 1. SpringBootApplication 2. Spring Bean 相关 2.1. Autowired 2.2. Component,Repository,Service, Controller 2.3. RestController 2.4. Scope 2.5. Configuration 3. 处理常见的 HT…

Android Gradle 开发与应用 (一) : Gradle基础

1. Gradle是什么 Gradle是一个通用的构建工具&#xff0c;支持诸多主要的 IDE&#xff0c;包括 Android Studio、IntelliJ IDEA、Visual Studio 等 Gradle 的底层实现(核心引擎和框架)其实是用 Java 编写的开发者通常使用 Groovy 或 Kotlin 来编写构建脚本 1.1 那么为什么Gra…

正版IDM多少钱?如何便宜购买序列号

IDM是一款互联网下载神器&#xff0c;它的全称是Internet Download Manager&#xff0c;可以将下载速度提升至5倍以上。那么IDM正版多少钱&#xff1f;如何才能买到正版IDM序列号呢&#xff1f; 正版IDM的价格根据付费模式和购买渠道不同&#xff0c;所需要的价格也是不同的。…

打开 Camera app 出图,前几帧图像偏暗、偏色该怎样去避免?

1、问题背景 使用的安卓平台&#xff0c;客户的应用是要尽可能快的获取到1帧图像效果正常的图片。 但当打开 camera 启动出流后&#xff0c;前3-5帧图像是偏暗、偏色的&#xff0c;如下图所示&#xff0c;是抓取出流的前25帧图像&#xff0c; 前3帧颜色是偏蓝的&#xff0c;…