第三次学JAVA再学不好就吃翔(part36)--抽象类
学习笔记,仅供参考
文章目录
- 面向对象
- 抽象类
- 抽象类的概述
- 抽象类的成员特点
面向对象
抽象类
抽象类的概述
- 抽象类的概述
- 抽象就是看不懂的
- 抽象的特点
- 抽象类和抽象方法必须用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)--抽象类相关推荐
- 第三次学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方法,那么缓冲区就会被刷新,数据 ...
最新文章
- day1---while循环语句和练习
- CentOS 7安装Nginx
- S5PV210开发 -- I2C 你知道多少?(二)
- Python3 strip()去除字符串首尾指定信息
- C++Addition rule of probabilities概率加法法则算法(附完整源码)
- html img 坐标,Html img 标签
- 环境在c盘_如何给女朋友解释为什么 Windows 上面的软件都把自己安装在 C 盘
- 抖音城市美食算数报告
- 【2016年第6期】SKA数据中心云平台方案的概念性研究
- 使用Java实现发送email邮件
- OpenShift 4 之通过Dockerfile部署容器应用
- 主机cpu突然飙高,如何快速排查问题
- PS-fiveday-快速选择和魔棒工具(快速抠图)
- 18、弱电锦集:网络视频监控知识问答100例
- 数据分析报告怎么写?这5个步骤你必须了解
- 在android移动终端运行android应用程序
- 什么是443端口?HTTPS是什么端口?如何工作
- c++逆天改命进阶--RedBlackTree
- 小黑leetcode清爽雨天之旅,刚吃完宇飞牛肉面、麻辣烫和啤酒:112. 路径总和
- [易飞]2019年税率改革
热门文章
- UBuntu20.04下安装Matlab2015B
- 12伏的蓄电池有几个单格组成_福建汤浅蓄电池ups电源机房一体化
- python 单例模式的实现方法_python中单例模式的四种实现方式
- telnet或SQLplus下命令输入错误如何删掉重新输入
- Redis 一些高级用法
- nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
- Javaweb学习笔记——(三)——————JavaScript基础DOM基础
- 【matlab】设定C++编译器
- hive数据类型转换
- 安装linux桌面总结