抽象类
什么是抽象类:
由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类。抽象的类无法进行实例化,因为他不是具体存在的类,或者说这样的类还不够完善,不能直接使用new关键字调用其构造器生成该类的对象。我们可以使用abstract定义一个抽象类和抽象方法,示例代码如下:
abstract class test{
abstract int xx(int x, int y);
}
抽象的方法没有方法体。需要注意的是在抽象类中**既可以有抽象方法,也可以有普通方法,**注意抽象方法是没有方法体的(也就是方法后面是没有大括号的)。凡是继承这个抽象类的实体子类,都必须要实现这个抽象方法。(也就是重写该方法)
我们总结一下抽象类的特点:
(1)抽象类不能被实例化
(2)构造方法 和 static 方法不能是抽象的
(3)父类的抽象方法往往在子类中实现
(4)抽象类可以具有指向子类对象的对象引用
小结:
当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法, 那个这个类就是抽象类
所谓抽象方法 就是没有实现的方法;所谓没有实现 就是指 没有方法体
当一个类中存在抽象方法时,需要将该类声明为abstract类
一般来说,抽象类会被继承,由其子类来实现抽象方法(重写方法,从而实现)
- 用abstract关键字来修饰一个类时,这个类就叫抽象类
访问修饰符 abstract 类名{
}
-
用 abstract 关键字来修饰一个方法时,这个方法就是抽象方法
访问修饰符 abstract 返回类型 方法名(参数列表); // 没有方法体
-
抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现抽象类()
-
抽象类可以有任意成员(抽象类还是类),比如:非抽象方法、构造器、静态属性等等
-
如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为 abstract 类
-
抽象方法不能使用private、final和static来修饰,因为这些关键字都是和重写相违背的
// 如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为 abstract 类
abstract class A{
public abstract void Hi();
}
// class B extends A{} //会报错
abstract class B extends A{ // ok
}
class C extends A{
@Override //重写
public void Hi(){ //这里相当于C类实现了父类A的抽象方法。 所谓实现方法 就是有方法体
}
}