Java继承概述以及Java继承案例和继承的好处

Java继承概述

1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些相同属性和行为,只要继承那个类即可。

2.在Java中通过extends关键字可以实现类与类的继承。

  例如:class 子类名 extends 父类名 {}

3.单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生类。

4.有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,还可以定义自己的新成员。

-----------------------------------------------------------------------------

首先我来写两个代码:
//定义学生类
class Student {
  String name;
  int age;

  public Student() {}

  //getXxx()/setXxx()

  public void eat() {
    System.out.println("吃饭");
  }
}

//定义老师类
class Teacher {
  String name;
  int age;

  public Teacher() {}

  //getXxx()/setXxx()

  public void eat() {
    System.out.println("吃饭");
  }
}

我们观察上面两个代码:
  发现name,age成员变量,以及getXxx()/setXxx(),还有eat()等都是相同的。
  如果我们后来继续定义类,举例:工人类,军人类。他们是不是也具备这些内容呢?
  那么,我们每一次定义这样的类的时候,都要把这些重复的内容都重新定义一遍。
  麻烦不?当然麻烦。所以,我们要考虑改进?
那么如何改进呢?
  我这想的:我能不能把这些相同的内容给定义到一个独立的类中。
  然后,让这多个类和这个独立的类产生一个关系,有了这个关系后,
  这多个类就可以具备这个独立的类的功能。
  为了实现这个效果,Java就提供了一个技术:继承。

  父亲:
    4个儿子

继承怎么表示呢?继承的格式是什么样子的呢?
class Fu {}

class Zi extends Fu {

}

我们就回头修改我们的代码:
class Person {
  String name;
  int age;

  public Person() {}

  //getXxx()/setXxx()

  public void eat() {
    System.out.println("吃饭");
  }
}

class Student extends Person {
  public Student() {}
}

class Teacher extends Person {
  public Teacher() {}
}

-----------------------------------------------------------------------------

Java继承案例和继承的好处

 1 /*
 2     继承概述:
 3         把多个类中相同的内容给提取出来定义到一个类中。
 4         
 5     如何实现继承呢?    
 6         Java提供了关键字:extends
 7         
 8     格式:
 9         class 子类名 extends 父类名 {}
10         
11     好处:
12         A:提高了代码的复用性。
13         B:提高了代码的维护性。
14         C:让类与类之间产生了关系,是多态的前提。
15     
16         类与类之间产生了关系,其实也是继承的一个弊端:
17         类的耦合性增强了。
18         
19         开发的原则:低耦合,高内聚。
20         耦合:类与类之间的关系。
21         内聚:就是自己完成某件事情的能力。
22 */
23 
24 //使用继承前
25 /*
26 class Student {
27     public void eat() {
28         System.out.println("吃饭");
29     }
30     
31     public void sleep() {
32         System.out.println("睡觉");
33     }
34 }
35 
36 class Teacher {
37     public void eat() {
38         System.out.println("吃饭");
39     }
40     
41     public void sleep() {
42         System.out.println("睡觉");
43     }
44 }
45 */
46 
47 //使用继承后
48 class Person {
49     public void eat() {
50         System.out.println("吃饭");
51     }
52     
53     public void sleep() {
54         System.out.println("睡觉");
55     }
56 }
57 
58 class Student extends Person {}
59 
60 class Teacher extends Person {}
61 
62 class ExtendsDemo {
63     public static void main(String[] args) {
64         Student s = new Student();
65         s.eat();
66         s.sleep();
67         System.out.println("-------------");
68         
69         Teacher t = new Teacher();
70         t.eat();
71         t.sleep();
72     }
73 }
我的GitHub地址:https://github.com/heizemingjun
我的博客园地址:http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址:http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】

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

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

相关文章

描述用户场景

每一个组员根据自己所承担的项目,描绘用户场景并将典型用户和用户场景描述! 典型用户 ①当代大学生们,我们的收入多数是来自家庭父母给的生活费,或者还包括一些自己打工挣的零块。收入也就这么几个来源,但是支出却多种…

【pyqt5学习】——控件绑定槽函数的同时利用lambda实现传参

两种方法: 1、利用pyqtsignal的emit进行传参 2、connect函数进行传参 self.pushButton.clicked.connect(lambda:self.readZodiacByButtonText(self.pushButton.text())) # 根据按钮上的文字来进行阅读def readZodiacByButtonText(self,text):if self.language &…

如何用MaskBlt实现两个位图的合并,从而实现背景透明

我有两个位图,一个前景图,一个背景图(mask用途)。请问如何用MaskBlt实现两个位图的合并,从而实现背景透明! 核心代码:dcImage.SetBkColor(crColour);dcMask.BitBlt(0, 0, nWidth, nHeight, &…

史陶比尔与机器人之父

早在1982年,史陶比尔已经成立了工业机器人部门,经销美国UNIMATION公司的PUMA机器人,1988年,史陶比尔成功收购了 UNIMATION。而UNIMATION是世界上最著名的机器人专家恩格尔伯格所创立的企业,PUMA正是世界上第一台工业机…

git进阶

Git 进阶用法 Git 高阶用法 1. 基本概念 你的本地仓库由Git维护的三棵树组成。第一个是你的工作目录,它持有实际文件; 第二个是缓存区(index),它像个缓存区域,临时保存您的改动;最后是HEAD,指向你最近 一次提交后的结果。 git add…

lab3

lamp: 在阿里云linux(Ubuntu)上安装Apache mysql php : apt-get install mysql_server mysql_client php5 php_mysql apache2 系统会提示正确的包的名称 安装ECShop 在本地命令行 scp ecshop.zip rootxxx.xxx.xx.xxx:/var/www/ 把压缩文件拷贝…

【python学习】——pyttsx3库实现文本朗读、音量、音速等调节

import pyttsx3# 初始化朗读引擎 engine pyttsx3.init() # 设置朗读速度 self.engine.setProperty(rate, 120) # text为需要读取的内容 self.engine.say(text) # 不添加下面这句,没有声音 self.engine.runAndWait()pyttsx3其他应用: python pyttsx3实现…

mysql中如何判断某个字段是纯数字

SELECT * FROM m_customer WHERE LENGTH(0nickname) LENGTH(nickname); 原理是nickname字段如果某一位不是数字,那么跟0相加后只会保留不是数字的那一位之前的值, 比如SELECT 011a1bc FROM DUAL;结果是11,SELECT 0a1bc FROM DUAL;结果是0转载于:https://www.cnblogs.com/wangx…

Variable Assembly Language可变汇编语言

Variable Assembly Language可变汇编语言 可变汇编语言(Variable Assembly Language, VAL)是一个设计给Unimation Inc.工业机器人用的电脑控制系统及编程语言。VAL机器人语言是会被永久地储存于系统内,这包括了个体应用软件的导向。VAL能从容…

在ABAP里实现条件断点的三种方式

背景 有不同的同事问我这个问题:例如下图的LOOP要执行1000次,我只对其中的某一次比如第501次循环感兴趣,我肯定不可能按500次F5然后进入第501次的调试。或者我只对LOOP里某个变量为某一个具体值的那一次循环感兴趣。如何才能避免重复按F5,让断…

【pyqt5学习】——添加菜单栏动作action,给动作触发triggered绑定事件

1、打开qt-designer工具——视图——勾选上动作编辑器 2、勾选后右下方会出现动作编辑器栏 3、在改面板可以进行已有动作的属性编辑,也可以添加新的动作 4、 鼠标左键选中动作不松开,可以将动作拖到菜单栏 5、给动作绑定事件 self.saveLog.triggered.co…

什么情况下会调用到session_destroy()

https://segmentfault.com/q/1010000000191102 首先 ... session_destory() 是一个函数 ... 这个函数在任何情况下都不会被 php 引擎自动调用 ... 只能你手工去调用 ... php 内部存在着清理 session 的机制 ... 但与这个函数完全无关 ... 如果你想问的是什么时候该手工调用这个…

对永磁无刷电机的调速过程

考虑了一下对永磁无刷电机的调速过程。 一般把使用永磁转子、无电刷的电机,根据驱动方式分为永磁同步与直流无刷。其实没有本质区别。在此称为永磁无刷。 用永磁无刷电机的分子泵驱动器一向调速做得不太好。这两年好一些了,但是还是不能完全满意。李老…

C# / VB.NET合并PDF指定页

在前面的文章中,我们已经知道如何合并、拆分多个PDF文件,在这篇文章中的合并、拆分PDF文档主要是以方便文档管理的目的来操作文档,在文档查阅、管理及存储上很方便实用。但是我们如果想要合并多个文档中的部分文档页的内容,该如何…

高级异常

一、什么是异常 解析:异常就是在程序的运行过程中所发生的不正常事件 二、Java异常处理是通过5个关键字来解决的:try、catch、finally、(前三个是捕获异常)throw(手动抛出异常)、throws(声明异常…

【纠错】——错误:PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。“+解决方案

目录 问题出现场景 原因 解决方案 问题出现场景 先打开pdf文件,获取pdf文件内容后,利用os.remove()来删除文件,这时候出现错误 os.remove(source_path)PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。…

Eclipse中自动添加注释

方法一:Eclipse中设置在创建新类时自动生成注释 windows-->preference   Java-->Code Style-->Code Templates     code-->new Java files 编辑它 ${filecomment} ${package_declaration} /** * Author fufu* Time ${date} ${time} * Version 1.…

使用rancher创建负载均衡服务

2019独角兽企业重金招聘Python工程师标准>>> 2台主机,一个server包含2个容器进程(可以是多个),一个负载均衡容器(貌似是依赖haproxy的) 1,创建一个镜像,编辑Dockerfile 创…

Six Basic Functional Areas of Spring

转载于:https://www.cnblogs.com/Brake/p/5440738.html

【pyqt5学习】——登录界面跳转到主界面,登录界面关闭的情况下从主界面跳转回登录界面

目录 一、登录界面长下面这样,由qt designer设计 login.py 二、登录界面 逻辑代码loginLogic.py 三、主界面comsumeType.py 四、主界面逻辑代码comsumeTypeLogic.py 五、登录界面跳转至主界面 六、主界面回到登录界面 一、登录界面长下面这样,由qt d…