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

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

抽象类

学习抽象类以前,咱们要知道为何要学抽象类,抽象类用来干什么?带着这两个问题来迎接咱们接下来的学习。设计模式

第一个问题:咱们为何要学抽象类?
当咱们定义类的时候,每每会给这些类写一些方法,这些方法用来描述该类的行为。
假如咱们要求不一样形状的面积,咱们能够定义一个Shape类,但不一样的Shape子类计
算面积的方法是不同的,咱们的Shape类并不知道怎么计算每个不一样形状的图形
面积,这时咱们就能够使用抽象类,使抽象类中含有求面积这一通用行为,而咱们通
太重写getArea()方法,就能够求不一样形状的面积。

复制代码

可能到这里你还不明白,不要紧,下面咱们经过例子来具体分析。markdown

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

抽象类和抽象方法的规则

  • 抽象类和抽象方法必须经过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。学习

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

下期咱们来说和抽象类有关的接口。设计

相关文章
相关标签/搜索