这一节课,我们来了解一下抽象类和抽象方法。首先我们来了解一下什么叫做抽象类?我们创建一个类名字叫做颜色,那么这个颜色到底是红橙黄绿蓝靛紫中的哪个颜色呢?我们不知道对吧,所以这个时候这个颜色的类就是我们所说的抽象类。
抽 象 类
为了方便学习,这里我们直接上代码,大家可以在代码块里查看注释进行理解!
首先打开eclipse创建一个color类
public abstract class color {//抽象类不能实例化
//抽象类需要使用abstract来进行修饰
public void show() {
//我们在这里先创建一个show方法,以便这一期的学习
}
}
class Red extends color{
//再创建一个Red类继承color类,然后在这个类中重写show方法
public void show() {
//输出一句
System.out.println("我是红色");
}
}
class Blue extends color{
public void show(){
System.out.println("我是蓝色");
}
这里的Red和Blue是color类的子类
然后我们创建一个demo1类,来实例化并运行一下效果。
public class demo {
public static void main(String[] args) {//主函数
color c1 = new Red();//实例化color类中的Red子类
color c2 = new Blue();//实例化color类中的Blue子类
//然后我们将两个子类的show方法调用一下
c1.show();
c2.show();
}
}
运行以后控制台的运行效果如下:
抽象方法
所谓抽象方法,也就是抽象类里的方法。我们举个例子,创建一个Teacher类模拟老师,然后在Teacher类中添加一个teaching方法模拟讲课。那我们创建两个子类一个模拟数学老师,一个模拟英语老师以后就是如下情况
这里什么都没写,所以数学老师和英语老师都不讲课。这个时候我们就需要一个抽象方法。
抽象方法和抽象类一样需要abstract进行修饰,但抽象方法与其他方法不同的是,抽象方法的内容全部由子类来重写,所以不需要代码块区域。也就是不需要{}直接用;代替。如下:
申明了抽象方法以后,我们会发现,刚刚创建的子类全部报错如图
(由于疏忽,请大家在学习时候将上图中的English改为EnglishTeacher)
这个时候,我们就需要在子类中添加一个与抽象方法同名的方法,在方法中我们添加一个输出语句来对课程进行安排。所有代码展示如下:
public abstract class Teacher {
//先申明Teacher为抽象类
abstract public void teaching();//抽象方法也需要abstract进行修饰,但是不需要{}直接使用;代替
}
class MathTeacher extends Teacher{
//对抽象方法进行重写
public void teaching() {
System.out.println("我们来学习一下三角函数");
}
}
class EnglishTeacher extends Teacher{
//对抽象方法进行重写
public void teaching() {
System.out.println("open the English book");
}
}
以上就是抽象方法的讲解,抽象方法的使用场景一般用于当我们创建一个项目时,由系统架构师使用抽象的方法设计出程序的某些功能的整体架构,但是具体怎么实现这些功能运行就交给程序员来写。再简单点说,就是老板给你一个方案,这个方案的内容就是抽象方法,而具体怎么对这个方案进行安排就是程序员的事。
这里我们再对Teacher类进行一个运行展示,创建一个demo2类对Teacher进行实例化,然后调用子类的方法运行即可。代码如下:
public class demo2 {
public static void main(String[] args) {//主函数
Teacher lee = new MathTeacher();
Teacher tom = new EnglishTeacher();
lee.teaching();
tom.teaching();
}
}
效果图如下:
以上就是抽象类和抽象方法的讲解,有疑问可以在评论区留言或私信我进行解答。学习更多Java编程知识请关注公众号:Z学堂 或加入官方QQ群:434291544(内含源代码文件和教学视频)