java thread类是抽象类_抽象类详解
一,抽象类介绍
1.1 什么是抽象
抽象类:简单点来说就是不能实例化的类(或者说不能用new方法实例化的类)抽象类有点类似“模板的作用,其目的是根据他的格式来创建和修改新的类。(比如:盖房子首先有要画图纸,在照着图纸进行造房子。图纸就好比如抽象类,建房子就好比如抽象类派生的子类)
1.2 抽象方法
抽象方法:含有Abstract关键字开头的方法叫做抽象方法。注意抽象方法声明中修饰符static和abstract不能同时使用。抽象方法没有方法体,否则会报错。
原因解释:
1. 抽象方法为什么没有方法体:抽象类的抽象方法需要继承它的子类来实现,如果有方法体,子类去玩吗?本来抽象类起到的类似于”模板”的作用,好比于一种参考。
2. 抽象方法为什么abstract和static不能同时使用:这要探讨static修饰符的特性了,静态方法属于整个类的,静态方法只能访问静态成员变量或调用静态的成员方法。静态方法和静态属性可以被继承,但是没有被重写而是被隐藏。(这个下篇文章我会讲解),抽象类被继承后抽象方法会重写,而静态方法会被隐藏没有重写。
1.3 两者之间的关系
关系:含有抽象方法的类叫做抽象类,抽象类不一定还有抽象方法。
1.4 抽象类的特性
抽象类本能被实例化不能new
抽象类的抽象方法abstract和static不能同时使用
抽象类中可以有属性, 可以存在普通方法,抽象类一定有构造方法,其目的是对属性的初始化。
抽象类不能别final声明(final定义的类没有子类)
可以直接调用抽象类中的静态方法(静态方法属于类的本身)
1.5 代码演示:
abstract public class A {
public int a=10;
public A()
{
}
public void print()
{
System.out.println("抽象类中的普通方法");
}
public static void printStatic()
{
System.out.println("抽象类中的静态犯法");
}
public static void main(String[] args) {
A.printStatic();
A a=new A();//对抽象类进行实例化
}
}
报错
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot instantiate the type A
at com.demo.Abstract.Test.A.main(A.java:15)