当多个类中出现相同功能,但是功能主体不同时,我们可以向上抽取,只抽取功能定义,而不抽取功能主体。

抽象类的特点

  1. 抽象方法一定在抽象类中。
  2. 抽象方法和抽象类都必须被abstract关键字修饰。
  3. 抽象类不可以用new创建对象,因为调用抽象方法没有意义。
  4. 抽象类中的抽象方法要被使用,必须由子类复写所有的抽象方法后,才能建立子类对象调用。(如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。)
abstract class Student {
abstract void study();
abstract void read();
void sleep() {
System.out.println("sleep");
}
}
class StudentClass1 extends Student {
void study() {
System.out.println("study Java");
}
void read() {
System.out.println("read book");
}
}
class StudentClass2 extends Student {
void study() {
System.out.println("study python");
}
void read() {
System.out.println("study magazine");
}
}
public class AbstractDemo {
public static void main(String[] args) {
StudentClass1 s1 = new StudentClass1();
StudentClass2 s2 = new StudentClass2();
s1.study();
s1.read();
s1.sleep();
s2.study();
s2.read();
s2.sleep();
}
}

运行结果

study Java
read book
sleep
study python
study magazine
sleep

StudentClass1类和StudentClass2类分别对Student类中所有抽象方法都进行了复写。

抽象类中可以不定义抽象方法,仅仅是为了不让该类建立对象

最新文章

  1. CentOS 静态IP设置
  2. Linux的nm查看动态和静态库中的符号
  3. js压缩
  4. Sensor(LIGHT)
  5. Linux Kernel Version Numbering
  6. 继承多态绕点 C#篇
  7. 比较字符串,equals防空指针问题
  8. javascript jquery each 影响 函数返回值
  9. LNMP一键安装包-CentOS 5/6下自动编译安装Nginx,MySQL,PHP
  10. HDU 3259 Wormholes
  11. 大区间素数筛选 POJ2689
  12. MySQL中数据表的增操作
  13. oracle中关于Oracle Database 11g Express Edition 打不开的问题
  14. 201521123011《Java程序设计》第6周学习总结
  15. Scrapy架构及其组件之间的交互
  16. Java程序算法设计视频分享,需要的来
  17. 海思Hi3559A/CV100 DDR4驱动配置手册
  18. java实现带空格字符串的倒序输出
  19. nodejs,javascript过滤emoj表情
  20. Windows服务器搭建Redis

热门文章

  1. 线段树(lazy标记)-- 模板
  2. 基于Dapper的开源Lambda扩展LnskyDB 3.0已支持Mysql数据库
  3. Windows2008r2、正版安装包
  4. MySQL的字段属性+SQLyog查看建表语句
  5. 洛谷P1219 八皇后 我。。。。。。
  6. eclipse新建web项目,并将其部署到tomcat
  7. redis安装并设置开机启动
  8. ALSA lib-io plugin
  9. [CF1034B] Longest Palindrome - 贪心
  10. Selenium3+python自动化007-Selenium常用定位方法