- 抽象类
抽象类无法实例化、无法创建对象
1、例图:
2、什么是抽象类?
类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类。类本身是不存在的,所以抽象类无法创建对象(无法实例化)。
3、抽象类属于什么类型?
抽象类也属于引用数据类型
4、抽象类怎么定义?
语法:
[修饰符列表] abstract class 类名{
类体;
}
- 抽象类是无法实例化的,无法创建对象的,所以抽象类是用来被子类继承的。
- final和abstract不能联合使用,这两个关键字是对立的。
- 抽象类的子类可以是抽象类。抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是供子类使用的。
- 抽象类关联到一个概念:抽象方法。什么是抽象方法呢?
1、抽象方法表示没有实现的方法,没有方法体的方法。
例如:public abstract void dosome ();
2、抽象方法特点是:
特点1:没有方法体,以分号结尾。
特点2:前面修饰符列表中有abstract关键字。
3、抽象类中不一定有抽象方法,抽象方法必须出现在抽象类中。
- 重要结论:
1、一个非抽象的类继承抽象类,必须将抽象类中的抽象方法实现了。(将从父类中继承过来的抽象方法进行覆盖/重写,或者也可以叫做“实现"。)
2、代码例子:
package com.zyh.abstractTest;
abstract class Animal {
public abstract void move();
}
package com.zyh.abstractTest;
class Bird extends Animal{
public void move(){
System.out.println("flying");
}
}
package com.zyh.abstractTest;
public class Test {
public static void main(String[] args) {
Animal a = new Bird();//向上转型
//这就是面向抽象编程.
// 以后你都是调用的a.xxxx,a的类型是Animal;
// Animal是抽象的,面向抽象编程,不要面向具体编程;
// 降低程序的耦合度,提高程序的扩展力;
// 这种编程思想符合0CP原则.
a.move();
}
}
- 判断题:Java语言中凡是没有方法体的方法都是抽象方法
(错误)
object类中就有很多方法都没有方法体,都是以";"结尾的,但他们都不是抽象方法,例如:public native int hashcode();这个方法底层调用了c++写的动态链接库程序。前面修饰符列表中没有: abstract。有一个native。表示调用JVM本地程序。