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

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

目录

  • 一、java继承是什么?
  • 二、为什么使用java继承
  • 三、java继承的实现  
    • 1.1  java继承的基本语法
    • 1.2  super的用法    

 

一、Java继承是什么?

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

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

二·、为什么使用继承?

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

那为什么要使用继承呢?

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

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

三、继承的实现

 1.java继承的基本语法

1 package pkg12;
2 //Son是子类 ,Father是父类   所以就是子类继承(extends)父类
3 public class Son extends Father{
4     //方法......
5
6 }

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

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

  2、继承的特点:

  • 子类会把父类所以的属性和方法都继承下来。(先不考虑final)
  • 如果父类包含了共同的属性和方法,我们可以使用继承来设计程序
  • 子类使用extends关键字继承父类的共同属性以外,子类话可以有自己特有的属性和方法。
  • 父类更通用,子类更具体。
  • 子类只能获得父类中的非private的属性,如果想要继承就得提供公共的set和get的方法,私有的方法是无法继承的。  

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

 1 package pkg11;
 2
 3 //定义了一个老师类 同时都有两个属性和两个方法
 4 class TeachJava{
 5     String name;
 6     int age;
 7
 8     public void TeachJava(){
 9         System.out.println(this.name+"在上java课");
10     }
11     public void sleep(){
12         System.out.println(this.name+"在休息");
13     }
14 }
15
16
17 //定义了二个老师类 同时都有两个属性和两个方法
18 class TeachHtml{
19     String name;
20     int age;
21     public void TeachHtml(){
22         System.out.println(this.name+"在上Html课");
23     }
24     public void sleep(){
25         System.out.println(this.name+"在休息");
26     }
27 }
28
29
30 public class TextExtends{
31     public static void main(String args[]){
32         //实例化出第一个老师
33         TeachJava  tj = new TeachJava();
34         tj.name = "张三";
35         tj.age = 18 ;
36         tj.TeachJava();
37         tj.sleep();
38         //实例化出第二个老师
39         TeachHtml th = new TeachHtml();
40         th.name = "李四";
41         th.age = 34;
42         th.TeachHtml();
43         th.sleep();
44     }
45 }

运行效果:

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

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

 1 package pkg11;
 2 //我们可以把相同的属性和方法放在一个类中,定义为  父类
 3
 4 //父类
 5 class Teacher{
 6     String name;
 7     int age;
 8
 9     public void sleep(){
10         System.out.println(this.name+"在睡觉");
11     }
12 }
13
14 //子类
15
16
17 //        子类     继承     父类
18 class TeachJava extends Teacher{
19     public void TeachJava(){
20         System.out.println(this.name+"在讲java课程");
21     }
22 }
23
24 //        子类     继承     父类
25 class TeachHtml extends Teacher{
26
27     public void TeachHtml(){
28         System.out.println(this.name+"在讲HTML课程");
29     }
30 }
31
32 public class TextExtends1{
33     public static void main(String args[]){
34         TeachJava tj = new TeachJava();
35         tj.name = "张三";//调用父类中的属性
36         tj.age = 20;
37         tj.TeachJava();//钓鱼自己的方法
38         tj.sleep();//调用父类的方法。
39         TeachHtml th = new TeachHtml();
40         th.name="李四";//调用父类中的属性
41         th.age = 25;
42         th.TeachHtml();//调用自己的方法
43         th.sleep();//调用父类的方法。
44     }
45 }

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

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

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

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

package pkg11;
//我们可以把相同的属性和方法放在一个类中,定义为  父类//父类
class Teacher{private String name;int age;public void sleep(){System.out.println(this.name+"在睡觉");}
}
//子类
//        子类     继承     父类
class TeachJava extends Teacher{public void TeachJava(){System.out.println(name+"在讲java课程");}
}
//        子类     继承     父类
class TeachHtml extends Teacher{public void TeachHtml(){System.out.println(this.name+"在讲HTML课程");}
}
public class TextExtends1{public static void main(String args[]){TeachJava tj = new TeachJava();tj.name = "张三";tj.age = 20;tj.TeachJava();tj.sleep();TeachHtml th = new TeachHtml();th.name="李四";th.age = 25;th.TeachHtml();th.sleep();}
}

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

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

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

 1 //父类
 2 class Teacher{
 3     private String name;
 4     int age;
 5
 6     //封装
 7     public void setName(String name){
 8         this.name = name;
 9     }
10     public void getName(){
11         return name;
12     }
13     public void sleep(){
14         System.out.println(this.name+"在睡觉");
15     }
16 }

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

 4 //父类
 5 class Teacher{
 6     private String name;
 7     int age;
 8
 9     //封装
10     public void setName(String name){
11         this.name = name;
12     }
13     public void getName(){
14         return name;
15     }
16     public void sleep(){
17         System.out.println(this.name+"在睡觉");
18     }
19 }
20 //子类
21 //        子类     继承     父类
22 class TeachJava extends Teacher{
23     public void TeachJava(){
24         System.out.println(this.getName+"在讲java课程");
25     }
26 }
27 //        子类     继承     父类
28 class TeachHtml extends Teacher{
29
30     public void TeachHtml(){
31         System.out.println(this.getName()+"在讲HTML课程");
32     }
33 }
34 public class TextExtends1{
35     public static void main(String args[]){
36         TeachJava tj = new TeachJava();
37         //tj.getName = "张三";       tj.getName("张三");
38         tj.age = 20;
39         tj.TeachJava();
40         tj.sleep();
41         TeachHtml th = new TeachHtml();
42         //th.getName="李四";       th.getName("李四");
43         th.age = 25;
44         th.TeachHtml();
45         th.sleep();
46     }
47 }

运行效果:

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

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

就是可以继承多个

package pkg11;
//多极继承
class A{}class B extends A{}class C extends B{}public class TextExtends1{public static void main(String args[]){}
}

运行效果:

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

这样是不支持的

 1 package pkg11;
 2 //错误展示
 3
 4 class A{
 5
 6 }
 7
 8 class B{
 9
10 }
11
12 class C extends A,B{
13
14 }
15
16 public class TextExtends3{
17     public static void main(String args[]){
18
19     }
20 }

运行效果:

总结:

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

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

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

 缺点:

    1、只要继承,就必须拥有父类的所有属性和方法;
    2、降低代码的灵活性。子类必须拥有父类的属性和方法,让子类多了约束;
    3、增强了耦合性,当父类的常量、变量和方法被修改时,需要考虑子类的修改,而且在缺乏规范的环境下,修改可能会造成严重的后果。

转载于:https://www.cnblogs.com/xym15079750872/p/10740365.html

java类的继承(基础)相关推荐

  1. JAVA 类的继承(私有属性、自动转型)(入门级小白一看就懂)

    JAVA 类的继承 文章目录 JAVA 类的继承 概述 1. 类的继承 1.1 引言 1.2 继承的定义 1.3 继承的规则 1.4 继承的格式 1.5 类的继承实例分析 2 私有属性 3 自动转型 ...

  2. Java类的继承总结

                       本文主要是讲述Java类的继承,更多Java技术知识,请登陆疯狂软件教育官网.加疯狂软件官方微信号:fkitorg,免费赢大奖,有机会赢得iOS培训课程一套. 在 ...

  3. java 类继承实例_java继承例子代码,java类的继承示例

    下面要给大家带来的是一个java类的继承的例子,一起来看看详细的代码吧! 一.题目 1.定义一个Person类,这个类的属性有三个,分别是name.age.color. 类有构造方法给三个属性赋值. ...

  4. JAVA类的继承 Teacher和Student

    JAVA类的继承 Teacher和Student 题目描述 定义一个Teacher类和一个Student类,二者有部分数据成员是相同的,例如num,name,sex. 学生有分数score,而教师有薪 ...

  5. Java类的继承(将来填坑)

    阅读<Java核心技术卷1> 第五章继承 关键字extends表示继承. 关键字extends表明正在构造的新类派生于一个已存在的类.这个已存在的类称为超类,新类称为子类.超类和新类是Ja ...

  6. JAVA类的继承、覆写和final关键字

    extends不用多说,是来继承的关键字,但它有几个要点: java不允许多重继承(一个类只能继承一个父类,不能继承多个父类) 派生类会继承基类所有属性和方法,但不能直接访问基类的private私有属 ...

  7. Java类的继承关键字_Java的第八天(类的继承、super关键字的使用、方法的重写)...

    39.类的继承java 描述类的时候,咱们若是发现有几个类有重复的属性和方法,咱们就能够采用继承的方法来设计ide 使用extends关键字来继承this 语法:设计 class 子类 extends ...

  8. java类的继承,接口,抽象类总结

    1. 类的继承 类和类之间可以实现继承关系,即从一个类中继承它的部分属性和部分方法,避免重写代码,提高了代码的重用性.比如武侠小说,言情小说,玄幻小说都属于小说,拥有小说所拥有的属性.继承的格式是pu ...

  9. 什么是java类的继承_Java类与继承

    在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在public,则类文件 ...

最新文章

  1. SpringBoot 整合 Shiro 实现动态权限加载更新+ Session 共享 + 单点登录
  2. nginx配置websocket负载均衡
  3. stm32非操作系统开发和带uCos的开发的区别,及一些解析
  4. [学习笔记]Pollard-Rho
  5. 分享实用监控脚本:使用Shell检查进程是否存在
  6. 【撸啊撸 Docker】搭建 Jenkins
  7. 一只紧握笔的手:地震中的感人图片之二
  8. Unity3D游戏开发之自由视角下的角色控制
  9. webflux上传下载文件
  10. 11 CO配置-控制-成本中心会计-定义分割结构
  11. python串口编程_python串口通信
  12. HTML5炫彩舞蹈学院官网网站模板
  13. 【异或】LeetCode 137. Single Number II
  14. 《高翔视觉slam十四讲》学习笔记 第六讲 非线性优化
  15. 实时查询(otoci)
  16. 2022年Web前端开发流程和学习路线(详尽版)
  17. c语言中动态内存分配的作用,C语言中动态内存的分配(malloc,realloc)
  18. ACM程序设计大赛题目分类
  19. XDOJ 回文数 C语言
  20. 通过S2B2C供应链电商平台网站解决方案,实现大宗商品万亿产业数字化转型

热门文章

  1. 推荐最新快手自动私信引流脚本教程,记得收藏
  2. 10.14 各地区销售概览-Tableau 实现
  3. [伸展树]codevs1286 郁闷的出纳员
  4. 【第11章】网络物理隔离技术原理与应用 (信息安全工程师 -- 软考笔记)
  5. js怎么实现导出html文件,JS - 使用 FileSaver.js 实现浏览器文件导出
  6. java p2p技术内幕.pdf_JavaP2P技术内幕 PDF
  7. 计算机辅助产品设计表达,计算机辅助工业设计综合表达方法与实例
  8. TX2和主机连接的几种方式
  9. 【计算机系统和网络安全技术】第六章:恶意软件
  10. CAXA电子图版二次开发20190803