第三次学JAVA再学不好就吃翔(part30)--继承
学习笔记,仅供参考
文章目录
- 面向对象
- 继承
- 先来个例子
- 继承的好处和弊端
- Java中类的继承特点
- 继承的注意事项
面向对象
继承
继承(extends),让类与类之间产生关系,比如子父类关系。
先来个例子
我们先定义一个Animal类,再定义一个Bunny类,Bunny类继承了Animal类:
class ExtendsTest {public static void main(String[] args) {Bunny b = new Bunny();b.name = "Huang";b.age = 9;b.show();}
}class Animal {String name;int age;public void eat() {System.out.println("吃饭");}public void sleep() {System.out.println("睡觉");}public void show() {System.out.println(name + "已经" + age + "个月啦");}
}class Bunny extends Animal {}
输出:
Huang已经9个月啦
继承的好处和弊端
- 继承的好处
- 提高了代码的复用性
- 提高了代码的维护性
- 让类与类之间产生了关系,是多态的前提
- 继承的弊端
类的耦合性增强了。
开发的原则:高内聚,低耦合。
耦合:类与类的关系
内聚:自己完成某件事情的能力
Java中类的继承特点
Java中类的继承特点
- Java只支持单继承,不支持多继承。
- Java支持多层继承(儿子继承父亲,父亲继承爷爷,一层一层的继承体系)
- 如果想用这个体系的所有功能,用最底层的类创建对象
- 如果想看这个体系的共性功能,看最顶层的类
举个例子
class ExtendsTest2 {public static void main(String[] args) {DemoA da = new DemoA(); //共性功能da.show1(); DemoC dc = new DemoC(); //拥有所有功能dc.show1();dc.show2(); dc.show3();}
}class DemoA {public void show1() {System.out.println("DemoA");}
}class DemoB extends DemoA {public void show2() {System.out.println("DemoB");}
}class DemoC extends DemoB {public void show3() {System.out.println("DemoC");}
}
输出:
DemoA
DemoA
DemoB
DemoC
继承的注意事项
- 继承的注意事项
- 子类只能继承父类所有非私有的成员(成员方法和成员变量);
- 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法;
- 不要为了部分功能而去继承。
第三次学JAVA再学不好就吃翔(part30)--继承相关推荐
- 第三次学JAVA再学不好就吃翔(part107)--字符流的拷贝
学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流的拷贝 拷贝纯文本文件 注意事项 自定义字符数组的拷贝 IO流 字符流的拷贝 拷贝纯文本文件 zzz.txt: 安徽财经大学 JAVA代码: pa ...
- 第三次学JAVA再学不好就吃翔(part106)--字符流
学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流输入流FileReader 字符流是什么 FileReader类构造方法 举个例子 字符流输出流FileWriter FileWriter构造方法 ...
- 第三次学JAVA再学不好就吃翔(part46)--Scanner类
学习笔记,仅供参考 文章目录 Scanner类 Scanner获取数据出现的问题 Scanner类 概述 Scanner是在java.util包下的一个类,使用该类时我们需要导包.这个类被final修 ...
- 第三次学JAVA再学不好就吃翔(part117)--单例设计模式
学习笔记,仅供参考,有错必纠 文章目录 多线程 单例设计模式 饿汉式 懒汉式 第三种格式 Timer类 线程的五种状态 多线程 单例设计模式 单例设计模式,即保证类在内存中只有一个对象,如何保证类在内 ...
- 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类
学习笔记,仅供参考,有错必纠 IO流 LineNumberReader类 该类继承自java.io.BufferedReader,该类可以跟踪行号的缓冲字符输入流.此类定义了方法 setLineNum ...
- 第三次学JAVA再学不好就吃翔(part108)--带缓冲的字符流
学习笔记,仅供参考,有错必纠 文章目录 IO流 带缓冲的字符流 BufferedReader和BufferedWriter readLine和newLine方法 IO流 带缓冲的字符流 Buffere ...
- 第三次学JAVA再学不好就吃翔(part7)--基础语法之运算符
学习笔记,仅供参考 文章目录 JAVA基础语法 运算符 算数运算符 算术运算符 ++和-- 赋值运算符 关系运算符 JAVA基础语法 运算符 什么是运算符 就是对常量和变量进行操作的符号. 运算符的分 ...
- 第三次学JAVA再学不好就吃翔(part115)--多线程
学习笔记,仅供参考,有错必纠 文章目录 多线程 多线程引入 什么是线程 多线程并行和并发的区别 Java程序运行原理 多线程的实现方式 多线程实现的方式1 多线程程序实现的方式2 以上两种实现方式的区 ...
- 第三次学JAVA再学不好就吃翔(part113)--对象操作流
学习笔记,仅供参考,有错必纠 对象操作流 对象操作流可以将一个对象写出, 或者读取一个对象到程序中,也就是执行了序列化和反序列化的操作. 举个例子 先构造一个Role类: package com.gu ...
- 第三次学JAVA再学不好就吃翔(part104)--flush和close
学习笔记,仅供参考,有错必纠 flush和close flush方法 对于写出数据来说,当缓冲区满了之后,缓冲区中的数据会自动写出,但是当缓冲区没有满时,调用flush方法,那么缓冲区就会被刷新,数据 ...
最新文章
- mysql servicebroker_阿里云Kubernetes服务 - Service Broker快速入门指南
- torch 判断gpu可用
- supersu二进制更新安装失败_helm安装教程
- 机器学习认识聚类(KMeans算法)
- leader选举的原理
- 【源码品读】深入了解FeignContract协议解析过程
- iOS中js与objective-c的交互(转)
- 大学生每个月1500元的生活费,够吗?
- android官方架构组件,Android 架构组件官方文档01——LifeCycle
- SOFA 源码分析 — 扩展机制
- Canvas实战---模仿GOOGLE浮动小球效果
- 同时插入同一行记录,产生阻塞的处理分析(4号锁分析之Unique key的约束)
- 古代汉语(王力版)笔记 通论8-9
- JDK源码如何启动编译
- 安川服务器显示ab32,安川驱动器维修常见报警代码及维修方法
- 二维码的实现原理和实现过程[纠错码编码]
- 蓦然回首,Java 已经 24 岁了!
- Dither(抖动): Bayer Matrix(Bayer ordered dither matrix)与Bayer Filter(拜尔滤镜)
- excel怎么从身份证中提取性别?
- h5 和 微信小程序添加emoji表情处理
热门文章
- 深度学习:用于multinoulli输出分布的softmax单元
- java class类型参数_java – 如何从通用类型参数获取`.class`属性?
- 禅道启动mysql报错_测试工具之在Linux服务器上部署禅道Bug管理系统
- 自定义队列(优化了数组固定长度的弊端)以及集合中的一些重点内容
- WebService的相关概念1
- Python控制台英汉-汉英电子词典
- zabbix 搭建笔记
- 设计模式-装饰者模式[Decorator]
- 全国计算机技术与软件专业技术资格(水平)考试徽标
- 【学生信息管理系统】——总结篇