Java入门级教程
适合刚学习Java的小白选手
快来学习一下吧~~~
如果看完这篇感觉还不满足,可以继续看下面这篇文章
关于接口的详细知识
目录
一、抽象类的定义
二、抽象类的特征
三、抽象类存在的意义
一、抽象类的定义
什么是抽象类?
父类知道子类一定要完成某个功能,但是每个子类完成的情况是不一样的。
子类以后也只会用自己重写的功能,那么父类的功能就可以定义为抽象方法,子类重写调用子类自己的就可以了。这个父类就成为抽象类。抽象方法:没有方法体,只有方法签名,必须用abstract修饰。
拥有抽象方法的类必须定义成抽象类。抽象类:
必须用abstract修饰。抽象类的作用:
为了被子类继承。一个类继承了抽象类,必须重写完抽象类的所有抽象方法,否则该类只能定义为抽象类。
代码演示:
abstract class Employees{ public abstract void work(); } class Manager extends Employees{ @Override public void work() { System.out.println("班主任要管理学生~~"); } } class Teacher extends Employees{ @Override public void work() { System.out.println("老师要教育学生~~"); } } //测试类: public class AbstractDemo { public static void main(String[] args) { Teacher teacher = new Teacher(); teacher.work(); Manager manager = new Manager(); manager.work(); } }
二、抽象类的特征
抽象类的特征:有得有失。
有得:抽象类得到了拥有抽象方法的能力。
有失:抽象类失去了创建对象的能力。抽象类是否有构造器?抽象类是否可以创建对象?
一定有构造器,而且必须有。
提供给子类创建对象调用父类构造器使用。不能创建。
不能创建对象的原因:
反证法:
Anmal a = new Animal();
a.run();
抽象方法不能执行,因为它没有方法体。注意:
抽象类本身意味着抽象,抽象就是不能具体化。三、抽象类存在的意义:
1、抽象类就是为了被子类继承。(就是为了派生子类),否则毫无意义。
2、抽象类体现的是模板思想,部分实现,部分抽象。可以设计模板设计模式。
-----------------------------------------------------------------
抽象类设计模板设计模式什么是设计模式?
设计模式是前人或者技术大牛或者软件行业在实战中发现的优秀软件设计架构和思想。
后来者可以直接用这些架构或者思想就可以设计出优秀、高效率、可扩展性好和可维护性好的软件。模板设计模式就是一种经典的设计模式思想。
模板设计模式的作用:优化代码架构,提高代码的复用性。
---------------------------------------------------------------------------------------------
案例:
作文模板:
* 《我的爸爸》
* 第一段固定:请介绍一下你的爸爸,说说你的爸爸有多好,有多牛。
* 正文部分:抽象出来。
* 结尾部分:我爸爸真棒,有这样的爸爸爽爆了。
用抽象类设计模板演示://1、设计一个模板类 abstract class Template{ private String title = "《我的爸爸》"; private String one = "请介绍一下你的爸爸,说说你的爸爸有多好,有多牛。"; private String last = "我爸爸真棒,有这样的爸爸爽爆了。"; //2、写作文的功能 public void write() { System.out.println(title); System.out.println(one); //3、正文部分,这一段模板是不能确定的,需要自己写。 System.out.println(writeMain()); System.out.println(last); } public abstract String writeMain(); } class Student extends Template{ @Override public String writeMain() { return "正文部分:我的爸爸很帅,很牛。"; } } class Teacher1 extends Template{ @Override public String writeMain() { return "正文部分:老师的爸爸也很帅。"; } } //测试类: public class AbstractDemo2 { public static void main(String[] args) { Student s = new Student(); s.write(); Teacher1 t = new Teacher1(); t.write(); } }
小结:
1、抽象类不能创建对象,只能创建其非抽象子类的对象。
2、抽象类一定有构造器,而且必须有,提供给子类创建对象调用父类构造器使用。
3、抽象类中不一定包含抽象方法,但拥有抽象方法的类必须定义成抽象类。
4、一个类继承了抽象类,必须重写完抽象类的所有抽象方法,否则该类只能定义为抽象类。
5、抽象类体现的是模板思想,部分实现,部分抽象。抽象类不确定如何实现的定义成抽象方法,交给具体的子类去实现。