在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

注意事项在最后

抽象类概念:包含一个抽象方法的类就成为抽象类。
抽象方法:只是声明而未实现的方法称为抽象方法,抽象方法必须使用 abstract 关键字声明。

抽象类定格式:

abstract class 抽象类名称{
     属性;
     访问权限 返回值类型 方法名称(参数){		//普通方法
       [return 返回值类型]
     }
     访问权限 abstract 返回值类型 方法名称(参数); //抽象方法
     //注意:抽象方法没有方法实体!!!
}

代码样例:

abstract class A{	// 是定义了一个抽象类
	public static final String FLAG = "CHINA" ;	// 全局常量
	private String name = "李兴华" ;	// 定义一个普通的属性
	public void setName(String name){
		this.name = name ;
	}
	public String getName(){
		return this.name ;
	}
	public abstract void print() ;		// 定义抽象方法
};

从定义的角度来说,抽象类就是比普通类多了一个抽象方法,但是相对于普通类,抽象类不能实例化,必须由子类覆写抽象类中的全部抽象方法。

关于抽象类的注意事项:

  1. 抽象类不能用 final 关键字修饰,因为抽象类需要子类来覆写抽象方法
  2. 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
  3. 抽象类不一定拥有抽象方法,但是有抽象方法的类一定抽象类
  4. 抽象类有构造方法,抽象类也是类抽象类中也可存在属性,子类在实例化之前肯定要对父类进行实例化。
  5. 包含一个抽象方法的类一定是抽象类
  6. 抽象类和抽象方法都要使用abstract关键字修饰
  7. 抽象方法只需要声明不需要实现。
  8. 抽象方法必须要子类继承,子类如果不是抽象类,必须覆写抽象类中的所有抽象方法。