Java——5分钟带你了解什么是抽象类

这是我参与更文挑战的第4天,活动详情查看: 更文挑战

抽象类

学习抽象类之前,我们要知道为什么要学抽象类,抽象类用来干什么?带着这两个问题来迎接我们接下来的学习。

第一个问题:我们为什么要学抽象类?

当我们定义类的时候,往往会给这些类写一些方法,这些方法用来描述该类的行为。
假如我们要求不同形状的面积,我们可以定义一个Shape类,但不同的Shape子类计
算面积的方法是不一样的,我们的Shape类并不知道怎么计算每一个不同形状的图形
面积,这时我们就可以使用抽象类,使抽象类中含有求面积这一通用行为,而我们通
过重写getArea()方法,就可以求不同形状的面积。

复制代码

可能到这里你还不明白,没关系,下面我们通过例子来具体分析。

在第二个问题之前我们先了解抽象类和抽象方法的一些规则。

抽象类和抽象方法的规则

  • 抽象类和抽象方法必须通过abstract关键字修饰,并且抽象方法不能声明方法体。
public abstract class Test {
	public Test(){
	}
	//抽象方法不能含有方法体
	public abstract void showAll(){
		//error
	}
	public abstract void Print();
}
复制代码
  • 抽象类中可以不包含抽象方法,也可以包含抽象方法,但含有抽象方法的类一定是抽象类。
public abstract class Test {
	public Test(){
	}
	//抽象类中可以有非抽象方法,也可以含有抽象方法
	public void speak (String s){
		System.out.println(s);
	}	
        public abstract void Print();
}

public  class Test {
	public Test(){
	}
	//非抽象类,不能含有抽象方法
	public abstract void Print();//error
}

复制代码
  • 抽象类不能被实例化,即不能使用new关键字来调用构造器创建对象。但是抽象类中可以含有构造器,其构造器主要是用于其子类调用。
接下来是我们的第二个问题,抽象类用来干什么呢?
抽象类不能创建实例,只能被当成父类来继承,而使用抽象类,可以发挥多态的优势,使程序更加
灵活。其实抽象类是一种更高级的抽象,它从一些具有相同特征的子类中抽象出来,作为子类的通用
模板。
抽象类体现的就是一种模板设计,这也是设计模式的一中。(如果想要了解设计模式,建议大家去b站
找视频来学习,对我们的工作还是很有用的。)
复制代码

需要注意的是抽象类是abstract关键字修饰的,表明这个类只能被继承,而抽象方法同样需要abstract来修饰,表明这个方法只能被子类重写,而final修饰的类不能被继承,被final修饰的方法不能被重写,因此永远不能同时使用abstract和final。

以上就是我对抽象类的一些浅解,如有不对或遗漏之处,欢迎大家留言指正。

下期我们来讲和抽象类有关的接口。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享