学习笔记,仅供参考


文章目录

  • 面向对象
    • 继承
      • 先来个例子
      • 继承的好处和弊端
      • 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)--继承相关推荐

  1. 第三次学JAVA再学不好就吃翔(part107)--字符流的拷贝

    学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流的拷贝 拷贝纯文本文件 注意事项 自定义字符数组的拷贝 IO流 字符流的拷贝 拷贝纯文本文件 zzz.txt: 安徽财经大学 JAVA代码: pa ...

  2. 第三次学JAVA再学不好就吃翔(part106)--字符流

    学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流输入流FileReader 字符流是什么 FileReader类构造方法 举个例子 字符流输出流FileWriter FileWriter构造方法 ...

  3. 第三次学JAVA再学不好就吃翔(part46)--Scanner类

    学习笔记,仅供参考 文章目录 Scanner类 Scanner获取数据出现的问题 Scanner类 概述 Scanner是在java.util包下的一个类,使用该类时我们需要导包.这个类被final修 ...

  4. 第三次学JAVA再学不好就吃翔(part117)--单例设计模式

    学习笔记,仅供参考,有错必纠 文章目录 多线程 单例设计模式 饿汉式 懒汉式 第三种格式 Timer类 线程的五种状态 多线程 单例设计模式 单例设计模式,即保证类在内存中只有一个对象,如何保证类在内 ...

  5. 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类

    学习笔记,仅供参考,有错必纠 IO流 LineNumberReader类 该类继承自java.io.BufferedReader,该类可以跟踪行号的缓冲字符输入流.此类定义了方法 setLineNum ...

  6. 第三次学JAVA再学不好就吃翔(part108)--带缓冲的字符流

    学习笔记,仅供参考,有错必纠 文章目录 IO流 带缓冲的字符流 BufferedReader和BufferedWriter readLine和newLine方法 IO流 带缓冲的字符流 Buffere ...

  7. 第三次学JAVA再学不好就吃翔(part7)--基础语法之运算符

    学习笔记,仅供参考 文章目录 JAVA基础语法 运算符 算数运算符 算术运算符 ++和-- 赋值运算符 关系运算符 JAVA基础语法 运算符 什么是运算符 就是对常量和变量进行操作的符号. 运算符的分 ...

  8. 第三次学JAVA再学不好就吃翔(part115)--多线程

    学习笔记,仅供参考,有错必纠 文章目录 多线程 多线程引入 什么是线程 多线程并行和并发的区别 Java程序运行原理 多线程的实现方式 多线程实现的方式1 多线程程序实现的方式2 以上两种实现方式的区 ...

  9. 第三次学JAVA再学不好就吃翔(part113)--对象操作流

    学习笔记,仅供参考,有错必纠 对象操作流 对象操作流可以将一个对象写出, 或者读取一个对象到程序中,也就是执行了序列化和反序列化的操作. 举个例子 先构造一个Role类: package com.gu ...

  10. 第三次学JAVA再学不好就吃翔(part104)--flush和close

    学习笔记,仅供参考,有错必纠 flush和close flush方法 对于写出数据来说,当缓冲区满了之后,缓冲区中的数据会自动写出,但是当缓冲区没有满时,调用flush方法,那么缓冲区就会被刷新,数据 ...

最新文章

  1. mysql servicebroker_阿里云Kubernetes服务 - Service Broker快速入门指南
  2. torch 判断gpu可用
  3. supersu二进制更新安装失败_helm安装教程
  4. 机器学习认识聚类(KMeans算法)
  5. leader选举的原理
  6. 【源码品读】深入了解FeignContract协议解析过程
  7. iOS中js与objective-c的交互(转)
  8. 大学生每个月1500元的生活费,够吗?
  9. android官方架构组件,Android 架构组件官方文档01——LifeCycle
  10. SOFA 源码分析 — 扩展机制
  11. Canvas实战---模仿GOOGLE浮动小球效果
  12. 同时插入同一行记录,产生阻塞的处理分析(4号锁分析之Unique key的约束)
  13. 古代汉语(王力版)笔记 通论8-9
  14. JDK源码如何启动编译
  15. 安川服务器显示ab32,安川驱动器维修常见报警代码及维修方法
  16. 二维码的实现原理和实现过程[纠错码编码]
  17. 蓦然回首,Java 已经 24 岁了!
  18. Dither(抖动): Bayer Matrix(Bayer ordered dither matrix)与Bayer Filter(拜尔滤镜)
  19. excel怎么从身份证中提取性别?
  20. h5 和 微信小程序添加emoji表情处理

热门文章

  1. 深度学习:用于multinoulli输出分布的softmax单元
  2. java class类型参数_java – 如何从通用类型参数获取`.class`属性?
  3. 禅道启动mysql报错_测试工具之在Linux服务器上部署禅道Bug管理系统
  4. 自定义队列(优化了数组固定长度的弊端)以及集合中的一些重点内容
  5. WebService的相关概念1
  6. Python控制台英汉-汉英电子词典
  7. zabbix 搭建笔记
  8. 设计模式-装饰者模式[Decorator]
  9. 全国计算机技术与软件专业技术资格(水平)考试徽标
  10. 【学生信息管理系统】——总结篇