java类继承语法_java类的继承(基础)

---恢复内容开始---

这篇随笔和大家讲讲java中类的继承是什么?希望对你们有所帮助。

目录

一、java继承是什么?

二、为什么使用java继承

三、java继承的实现

1.1  java继承的基本语法

1.2  super的用法

一、Java继承是什么?

简单来讲,Java中的继承是一个对象获取父对象的所有属性和行为的机制。它是面向对象编程系统(OOP)的重要组成部分。Java中继承的思想是,创建基于现有类的新类。从现有类中继承,可以重用父类的方法和字段。此外,还可以在当前类中添加新方法和字段

继承表示IS-A关系,也称为父子关系。

二·、为什么使用继承?

继承就是 比如,你和你的父亲,你可以继承你父亲身上的基因,但继承基因的同时你可以除了继承你父亲基因的同时再创造新的基因,就比如你父亲不高,但是你想变高,就可以在基础的同时使用重写来改变你的身高。

那为什么要使用继承呢?

1、可以实现方法重写(这样可以实现运行时多态性)。提高了代码的复用性。

2、继承允许我们重用代码,它提高了Java应用程序的可重用性。

三、继承的实现

1.java继承的基本语法

1 packagepkg12;2 //Son是子类 ,Father是父类 所以就是子类继承(extends)父类

3 public class Son extendsFather{4 //方法......

5

6 }

如果要继承一个类的话,就要使用extends关键字

提示:继承按时着成员在派生类中课访问,而不是仅仅限于当前定义的类,要在包含基类的包的外部派生一个类,这个基类就必循声明为public ,如果没有声明为public 这个类就不能直接地扩展到包的外部。

2、继承的特点:

子类会把父类所以的属性和方法都继承下来。(先不考虑final)

如果父类包含了共同的属性和方法,我们可以使用继承来设计程序

子类使用extends关键字继承父类的共同属性以外,子类话可以有自己特有的属性和方法。

父类更通用,子类更具体。

子类只能获得父类中的非private的属性,如果想要继承就得提供公共的set和get的方法,私有的方法是无法继承的。

用一个习题,来解释一下什么叫做继承,代码如下:

1 packagepkg11;2

3 //定义了一个老师类 同时都有两个属性和两个方法

4 classTeachJava{5 String name;6 intage;7

8 public voidTeachJava(){9 System.out.println(this.name+"在上java课");10 }11 public voidsleep(){12 System.out.println(this.name+"在休息");13 }14 }15

16

17 //定义了二个老师类 同时都有两个属性和两个方法

18 classTeachHtml{19 String name;20 intage;21 public voidTeachHtml(){22 System.out.println(this.name+"在上Html课");23 }24 public voidsleep(){25 System.out.println(this.name+"在休息");26 }27 }28

29

30 public classTextExtends{31 public static voidmain(String args[]){32 //实例化出第一个老师

33 TeachJava tj = newTeachJava();34 tj.name = "张三";35 tj.age = 18;36 tj.TeachJava();37 tj.sleep();38 //实例化出第二个老师

39 TeachHtml th = newTeachHtml();40 th.name = "李四";41 th.age = 34;42 th.TeachHtml();43 th.sleep();44 }45 }

运行效果:

c5f5f8595ea423bc35b5521961b1dc05.png

看到我们定义两个老师类,大家有没有发现一个问题呢?就是我定义了两个老师类, 两个老师类里面发现两个相同的属性和一个方法 ,这时我们就可以采用继承的方式来设计这个案例。

那我们应该怎么设计呢? 遵循上面说到的继承语法:子类 继承 父类。

1 packagepkg11;2 //我们可以把相同的属性和方法放在一个类中,定义为 父类3

4 //父类

5 classTeacher{6 String name;7 intage;8

9 public voidsleep(){10 System.out.println(this.name+"在睡觉");11 }12 }13

14 //子类15

16

17 //子类 继承 父类

18 class TeachJava extendsTeacher{19 public voidTeachJava(){20 System.out.println(this.name+"在讲java课程");21 }22 }23

24 //子类 继承 父类

25 class TeachHtml extendsTeacher{26

27 public voidTeachHtml(){28 System.out.println(this.name+"在讲HTML课程");29 }30 }31

32 public classTextExtends1{33 public static voidmain(String args[]){34 TeachJava tj = newTeachJava();35 tj.name = "张三";//调用父类中的属性36 tj.age = 20;37 tj.TeachJava();//钓鱼自己的方法38 tj.sleep();//调用父类的方法。39 TeachHtml th = newTeachHtml();40 th.name="李四";//调用父类中的属性41 th.age = 25;42 th.TeachHtml();//调用自己的方法43 th.sleep();//调用父类的方法。44 }

45 }

两个老师类的中重复的属性和方法,我没个把他归结为一个类当中作为 父类,因为我们继承的父类的属性和方法,所以我们就有和父类相同的属性和方法,所以继承的最明显的优点就是减少了代码的重复性。

这样继承和我们之前写的代码运行效果会一样吗?运行效果如下:

5d1ad9812799df1bd4785e8514b39342.png

子类只能获得父类中的非private的属性,如果想要继承就得提供公共的set和get的方法,私有的方法是无法继承的。

这句特点要这样理解呢  为什么说要继承就的使用set和get方法呢?先看代码:

packagepkg11;//我们可以把相同的属性和方法放在一个类中,定义为 父类//父类

classTeacher{privateString name;intage;public voidsleep(){

System.out.println(this.name+"在睡觉");

}

}//子类//子类 继承 父类

class TeachJava extendsTeacher{public voidTeachJava(){

System.out.println(name+"在讲java课程");

}

}//子类 继承 父类

class TeachHtml extendsTeacher{public voidTeachHtml(){

System.out.println(this.name+"在讲HTML课程");

}

}public classTextExtends1{public static voidmain(String args[]){

TeachJava tj= newTeachJava();

tj.name= "张三";

tj.age= 20;

tj.TeachJava();

tj.sleep();

TeachHtml th= newTeachHtml();

th.name="李四";

th.age= 25;

th.TeachHtml();

th.sleep();

}

}

eb23fd17999fdea317f0a4daa7bf4b44.png在我父类属性中加了一个private,这样我们再运行运行程序看看会发生什么?

61144d00bb2cc8c334a6cb53b722594c.png

这里发生了报错,都在name的报错,所以上面的特点 说的真是这点私有的方法是无法继承的。

如果想在继续继承父类的话,那么我们就的使用封装的方法,get和set

1 //父类

2 classTeacher{3 privateString name;4 intage;5

6 //封装

7 public voidsetName(String name){8 this.name =name;9 }10 public voidgetName(){11 returnname;12 }13 public voidsleep(){14 System.out.println(this.name+"在睡觉");15 }16 }

之后调用方法就可以进行继承了。1 packagepkg11;2 //我们可以把相同的属性和方法放在一个类中,定义为 父类3

4 //父类

5 classTeacher{6 privateString name;7 intage;8

9 //封装

10 public voidsetName(String name){11 this.name =name;12 }13 public voidgetName(){14 returnname;15 }16 public voidsleep(){17 System.out.println(this.name+"在睡觉");18 }19 }20 //子类21 //子类 继承 父类

22 class TeachJava extendsTeacher{23 public voidTeachJava(){24 System.out.println(this.getName+"在讲java课程");25 }26 }27 //子类 继承 父类

28 class TeachHtml extendsTeacher{29

30 public voidTeachHtml(){31 System.out.println(this.getName()+"在讲HTML课程");32 }33 }34 public classTextExtends1{35 public static voidmain(String args[]){36 TeachJava tj = newTeachJava();37 //tj.getName = "张三";

tj.getName("张三");38 tj.age = 20;39 tj.TeachJava();40 tj.sleep();41 TeachHtml th = newTeachHtml();42 //th.getName="李四";

th.getName("李四");43 th.age = 25;44 th.TeachHtml();45 th.sleep();46 }47 }

运行效果:

0187561e3c386d50381eae045e7d887d.png

以上继承是单一继承,java还有多极继承

多级继承: 在多级继承中,派生类将继承基类,并且派生类也充当其他类的基类。在下面的图像中,类A用作派生类B的基类,后者又用作派生类C的基类。在Java中,类不能直接访问祖父母的成员。

就是可以继承多个

9af275aae7f7db5da62bc0f3f7c10736.png

packagepkg11;//多极继承

classA{

}class B extendsA{

}class C extendsB{

}public classTextExtends1{public static voidmain(String args[]){

}

}

运行效果:

d409747e5845fd65284d03a85e6a176f.png

但是不支持多继承,它可以支持继承多个类,但不支持同时继承两个类。

9c66a4ddd80e6e4c048d6959202477a1.png这样是不支持的

1 packagepkg11;2 //错误展示

3

4 classA{5

6 }7

8 classB{9

10 }11

12 class C extendsA,B{13

14 }15

16 public classTextExtends3{17 public static voidmain(String args[]){18

19 }20 }

运行效果:

26e7542df34f999f71bc9c8640b68060.png

总结:

继承的优缺点

优点:1、代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性。

2、提高代码的重用性,子类可以形似父类,但又异于父类。

3、提高代码的可扩展性。

缺点:

1、只要继承,就必须拥有父类的所有属性和方法;

2、降低代码的灵活性。子类必须拥有父类的属性和方法,让子类多了约束;

3、增强了耦合性,当父类的常量、变量和方法被修改时,需要考虑子类的修改,而且在缺乏规范的环境下,修改可能会造成严重的后果。

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

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

相关文章

事务及事务隔离级别

什么是事务 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种状态转换为另一种状态。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(…

java类加载的搜索顺序_Java类加载器加载类顺序

java ClassLoader的学习java是一门解释执行的语言,由开发人员编写好的java源文件先编译成字节码文件.class形式,然后由java虚拟机(JVM)解释执 行,.class字节码文件本身是平台无关的,但是jvm却不是,为了实现所谓的一次编…

HTTP 必备干货学习,一篇HTTP入门 不收藏都可惜!

文章目录📢前言HTTP 必备干货学习,程序员不懂网络怎么行HTTP 协议五个特点:网络结构图解HTTP概述🏳️‍🌈基于 HTTP 的系统的组件客户端:用户代理网络服务器代理HTTP 的基本方面HTTP 很简单HTTP 是可扩展的…

在别人发来的文章上修改时,出现红色且带下划线的情况

这是因为一些比较严谨的机构将模板发过来在你修改的时候会出现特殊标记(比如律师行业) 这里想要直接在他的文档上进行修改,需要取消掉原来的修订配置 再次输入格式消失

谈Servlet与JSP

文章目录前言正文1、什么是JSP?2、什么是Servlet?3、JSP与Servlet的区别和联系4、扬长弊端提出MVC前言 提高Java Web 开发,不得不说http协议,接下来就说Servlet 和 Jsp 这两个java类。 正文 1、什么是JSP? JSP(Java Server Pages)是Sun…

Tomcat就是这么简单

什么是Tomcat Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器。 为什么我们需要用到Tomcat 如果你学过html,css,你会知道你写的页面只能自己访问,别人不能远程访…

java if两个条件_java(3) if结构

一、基本if结构1、流程图1)输入输出2)判断和分支3) 流程线1.1 简单的if条件判断if(表达式){//表达式为true,执行{}中的代码}示例1:如果张三的Java成绩大于98分,那么老师奖励他一个MP4。1 public classPractice1 {2 pu…

Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

什么是Servlet? Servlet其实就是一个遵循Servlet开发的java类。Servlet是由服务器调用的,运行在服务器端。 为什么要用到Servlet? 我们编写java程序想要在网上实现 聊天、发帖、这样一些的交互功能,普通的java技术是非常难完成…

Servlet第三篇【request和response简介、response的常见应用】

response、request对象 Tomcat收到客户端的http请求,会针对每一次请求,分别创建一个代表请求的request对象、和代表响应的response对象 既然request对象代表http请求,那么我们获取浏览器提交过来的数据,找request对象即可。respon…

spring三种注入方式

设置Spring的作用域 或者使用枚举值设置 单例和多里使用场景 自动注入 Primary 一个接口有多个实现被spring管理吗,在依赖注入式,spring会不知道注入哪个实现类就会抛出NoUniqueBeanDefinitionException异常 使用Primary 来告诉Spring 注入哪个实现…

java虚拟机1.7_《Java虚拟机原理》7.1 精选 —— 总览

1.一个程序在 JVM 中运行的完整流程java程序执行流程.JPG说明:① 类加载器把字节码加载到方法区② 方法区的字节码被 JVM new,在堆内存中生成字节码对象③ 字节码对象被 GC 的要求有:该类没有在其他任何地方被引用;该类的所有的实…

Servlet第四篇【request对象常用方法、应用】

什么是HttpServletRequest HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。 简单来说,要…

java 设置控制台标题_修改Tomcat控制台标题以及标题乱码处理

双击“startup.bat”启动Tomcat,控制台默认标题是Tomcat,如下图:修改标题很容易,编辑catalina.bat这个文件(跟startup.bat在同级目录下),编辑的时候建议使用notepad、editplus之类的工具。然后找到如下代码片段(大约在…

Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】

什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话. 为什么我们要使用会话技术&#xff1…

Servlet第六篇【Session介绍、API、生命周期、应用、与Cookie区别】

什么是Session Session 是另一种记录浏览器状态的机制。不同的是Cookie保存在浏览器中,Session保存在服务器中。用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录在服务器,这就是Session 如果说Cookie是检查用户身上的”…

Tomcat+Servlet面试题都在这里

下面是我整理下来的Servlet知识点: 图上的知识点都可以在我其他的文章内找到相应内容。 Tomcat常见面试题 Tomcat的缺省端口是多少,怎么修改 找到Tomcat目录下的conf文件夹进入conf文件夹里面找到server.xml文件打开server.xml文件在server.xml文件里面找到下列…

java sdk下载_Java Sdk下载 | 保利威帮助中心

播放界面开发前准备1.小程序微信开发者后台设置-开发设置-服务器域名中配置 [request合法域名]开始开发1.获取频道直播播放地址index.wxmlindex.js选项说明uid类型:String说明:直播账户idvid类型:String说明:直播频道idvideoConte…

mysql union 与 union all 语法及用法

1.mysql union 语法 mysql union 用于把来自多个select 语句的结果组合到一个结果集合中。语法为: select column,......from table1union [all]select column,...... from table2...在多个select 语句中,对应的列应该具有相同的字段属性&#xff0c…

Golang基础知识入门详解

Go语言入门 Go语言入门教程 很多人将 Go 语言 称为 21 世纪的 C 语言,因为 Go 不仅拥有 C 语言的简洁和性能,而且还很好的提供了 21 世纪互联网环境下服务端开发的各种实用特性,让开发者在语言级别就可以方便的得到自己想要的东西。 在 Go…

udp模拟tcp java_Java简单实现UDP和TCP

TCP实现TCP协议需要在双方之间建立连接,通过输入输出流来进行数据的交换,建立需要通过三次握手,断开需要四次挥手,保证了数据的完整性,但传输效率也会相应的降低。简单的TCP实现//服务端public class TcpServer {publi…