欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

9、抽象类

程序员文章站 2022-07-12 14:57:18
...

一、抽象类(abstract

 

    当多个类中出现相同功能,但是功能主体不同,这时可以进行向上抽取,只抽取功能定义,而不抽取功能主体

 

二、抽象方法所在类一定要标示为抽象类,也就是说该类需要被abstract关键字所修饰

 

三、abstract可以修饰类和方法不能修饰变量

 

四、抽象类特点

 

  1. 抽象方法一定在抽象类中
  2. 抽象方法和抽象类都被abstract修饰
  3. 抽象类不能new对象,因为调用抽象方法没有意义
  4. 抽象类中的方法要被使用,必须由子类覆盖其所有的抽象方法后,建立子类对象调用。
  5. 如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类(即强迫子类重写)
abstract class Student
 {
	 abstract void study();
 }
 class BaseStudent extends Student
 {
	 void study()
	 {
		System.out.println("base study");
	 }
 }
 class AdvStudent extends Student
 {
	 void study()
	 {
		System.out.println("adv study");
	 }
 }

 

五、抽象类和一般类

 

  1. 两者没有太大的不同,该如何描述事物,就如何描述事物。
  2. 只不过,该事物出现了一些看不懂的东西,这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义主体,那么就通过抽象方法来表示
  3. 抽象类不能实例化

六、抽象关键字abstract和哪些不可以共存?

 

    final,private,static

 

七、如果抽象类中有主函数,那是可以执行的,并且,非抽象方法可以调用抽象方法

import java.io.*;
abstract class Demo 
{
	public static void main(String[] args) throws Exception
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String line = br.readLine();
		System.out.println("<"+line+">");
	}
	abstract void show();
	void print()
	{
		System.out.println("你好");
		show();
	}
}
class D extends Demo
{
	public void show()
	{
		System.out.println("run show");
	}
	public static void main(String[] args) throws Exception
	{
		D d = new D();
		d.print();
	}
}

 

相关标签: 抽象类 abstract