学习笔记,仅供参考


文章目录

  • 面向对象
    • 抽象类
      • 抽象类的概述
      • 抽象类的成员特点

面向对象

抽象类

抽象类的概述

  • 抽象类的概述

    • 抽象就是看不懂的
  • 抽象的特点
    • 抽象类和抽象方法必须用abstract关键字修饰
    • 抽象类不一定有抽象方法,但有抽象方法的类一定是抽象类或者接口
    • 抽象类不能实例化
    • 抽象类的子类要么是抽象类,要么重写抽象类中的所有抽象方法。
  • 举个例子1(抽象类)
class AbstractTest {public static void main(String[] args) {}
}abstract class Animal {         //抽象类public abstract void eat(); //抽象方法//当我们不知道这个方法是如何实现的就可以把它定义为抽象方法
}
  • 举个例子2(抽象类不能被实例化)
class AbstractTest {public static void main(String[] args) {Animal a  = new Animal();}
}abstract class Animal {         //抽象类}

报错信息:

---------- javac ----------
AbstractTest.java:3: 错误: Animal是抽象的; 无法实例化Animal a  = new Animal();^
1 个错误Output completed (4 sec consumed) - Normal Termination
  • 举个例子2(抽象类的子类,重写抽象方法)
class AbstractTest {public static void main(String[] args) {Animal a  = new Bunny();  //父类引用指向子类对象a.eat();                  //编译看左边,运行看右边}
}abstract class Animal {         //抽象类public abstract void eat();}class Bunny extends Animal {public void eat() {System.out.println("兔子吃提草");}
}

输出:

兔子吃提草
  • 举个例子(抽象类的抽象子类,不重写抽象方法)
class AbstractTest {public static void main(String[] args) {}
}abstract class Animal {         //抽象类public abstract void eat();}abstract class Bunny extends Animal {}

抽象类的成员特点

  • 抽象类的成员特点

    • 成员变量:既可以是变量也可以是常量
    • 存在构造方法,用于子类访问父类数据的初始化
    • 成员方法:既可以是抽象的也可以是非抽象的
  • 抽象类的成员特性
    • 抽象方法:强制要求子类拥有该方法
    • 非抽象方法:子类继承下来,提高代码复用性
  • 举个例子(成员变量)
class AbstractTest {public static void main(String[] args) {}
}abstract class Animal { int num1 = 10;final int num2 = 20;}
  • 举个例子(构造方法)
class AbstractTest {public static void main(String[] args) {Animal a = new Bunny();}
}abstract class Animal { public abstract void eat();public Animal() {System.out.println("Animal 空参构造");}}class Bunny extends Animal {public void eat() {System.out.println("Bunny吃提草");}}

输出:

Animal 空参构造
  • 举个例子(抽象类成员特性)
class AbstractTest {public static void main(String[] args) {Animal a = new Bunny();a.eat();a.play();}
}abstract class Animal { public abstract void eat();public void play() {System.out.println("动物玩");}}class Bunny extends Animal {public void eat() {System.out.println("Bunny吃提草");}}

输出:

Bunny吃提草
动物玩

如果父类有抽象方法,那么子类必须要重写,否则会报错。对于父类的非抽象方法,我们可以拿来用,提高代码复用性。

第三次学JAVA再学不好就吃翔(part36)--抽象类相关推荐

  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. day1---while循环语句和练习
  2. CentOS 7安装Nginx
  3. S5PV210开发 -- I2C 你知道多少?(二)
  4. Python3 strip()去除字符串首尾指定信息
  5. C++Addition rule of probabilities概率加法法则算法(附完整源码)
  6. html img 坐标,Html img 标签
  7. 环境在c盘_如何给女朋友解释为什么 Windows 上面的软件都把自己安装在 C 盘
  8. 抖音城市美食算数报告
  9. 【2016年第6期】SKA数据中心云平台方案的概念性研究
  10. 使用Java实现发送email邮件
  11. OpenShift 4 之通过Dockerfile部署容器应用
  12. 主机cpu突然飙高,如何快速排查问题
  13. PS-fiveday-快速选择和魔棒工具(快速抠图)
  14. 18、弱电锦集:网络视频监控知识问答100例
  15. 数据分析报告怎么写?这5个步骤你必须了解
  16. 在android移动终端运行android应用程序
  17. 什么是443端口?HTTPS是什么端口?如何工作
  18. c++逆天改命进阶--RedBlackTree
  19. 小黑leetcode清爽雨天之旅,刚吃完宇飞牛肉面、麻辣烫和啤酒:112. 路径总和
  20. [易飞]2019年税率改革

热门文章

  1. UBuntu20.04下安装Matlab2015B
  2. 12伏的蓄电池有几个单格组成_福建汤浅蓄电池ups电源机房一体化
  3. python 单例模式的实现方法_python中单例模式的四种实现方式
  4. telnet或SQLplus下命令输入错误如何删掉重新输入
  5. Redis 一些高级用法
  6. nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
  7. Javaweb学习笔记——(三)——————JavaScript基础DOM基础
  8. 【matlab】设定C++编译器
  9. hive数据类型转换
  10. 安装linux桌面总结