abstract抽象类
1、含义:类和类之间具有共同特征,将这些共同特征提取出来,就形成抽象类。。。
在 java
中,被 abstract
关键字修饰的类叫做抽象类,被abstract
关键字修饰的方法叫做抽象方法。
抽象类本身是不存在的,所以抽象类无法创建对象,无法实例化!! 抽象方法是没有具体实现(没有方法体)的。
所以抽象类是用来被子类继承的。。
2、抽象类使用abstract
来定义。。
3、抽象类也属于引用数据类型,而不是基本数据类型。。
4、final
和 abstract
是不能联合使用的。。【abstract class 抽象类, 不能用 final
声明】
5、抽象类的子类还可以是抽象类,也可以是非抽象类。。
6、抽象类虽然无法实例化,但是抽象类有构造方法,该方法是供子类使用的。。
7、抽象类可以没有抽象方法,但是抽象方法必须出现在抽象类中;
抽象方法表示没有实现的方法,没有方法体的方法,是以分号结尾。。 例如:
abstract public void d();
*8、一个非抽象的类继承抽象类,必须将抽象类中的抽象方法实现了。。
这是Java强行规定的,否则编译器会报错。。。但是如果子类是抽象类,那么就可以不用重写父类的抽象方法
public class test{
public static void main(String args[]) {
//这里使用到了多态,创建对象。
Anmial a = new Cat();//面向抽象编程
a.move(); //猫在叫
}
}
abstract class Anmial{
abstract public void move();//抽象方法
}
//Cat不是抽象的, 并且未覆盖Anmial中的抽象方法move()
/*class Cat extends Anmial{
}*/
//必须将父类继承过来的抽象方法重写
class Cat extends Anmial{
public void move(){
System.out.println("猫在叫");
}
}
//如果子类是抽象类,那么就可以不用重写父类的抽象方法
abstract class Bird extends Anmial{
}
面试题(判断):Java语言中凡是没有方法体的方法都是抽象方法。 (×)
总结
抽象方法和普通方法的区别:
抽象方法是由继承了抽象类的子类重写后调用子类重写的方法来执行。
区别:
- 抽象方法有
abstract
修饰, - 抽象方法没有方法体,
- 抽象方法无法执行,
- 抽象方法
不能用 private
修饰,
抽象类和普通类的区别:
抽象类中可以有普通方法。
如果一个类继承了抽象类,那么这个类必须重写它的抽象方法,或者将类声明为抽象类
抽象类是有构造方法的,但是不能被实例化。
构造方法、类方法( static )不能声明为抽象( abstract )方法
区别:
- 抽象类有 abstract 修饰,
- 抽象类中可以有抽象方法,
- 抽象类不能被实例化,需要抽象类变量引用其子类的对象
抽象类除了不能被实例化以外,和普通类没有区别。定义抽象类是为了强迫子类实现抽象方法,是定义规范的
一个类中只要含有抽象方法,这个类就必须是抽象类;抽象类不一定含有抽象方法