Java面向对象之抽象类
- 概念
不包含抽象方法的类叫做普通类,反之,包含抽象方法的类叫做抽象类。定义抽象方法需要使用abstract关键字。
注意:包含抽象方法的类一定是抽象类,但抽象类可以不包含抽象方法。
例子:
abstract class A
{
public abstract void name();
public void ID()
{
System.out.println("114514");
}
}
abstract class B
{
public void Name()
{
System.out.println("野兽先辈");
}
public void Id()
{
System.out.println("114514");
}
}
- abstract关键字
在修饰一个抽象方法或者声明一个抽象类时必须使用abstract关键字。
注意事项:
抽象方法要求子类继承后必须重写。
1.private:被私有化后,子类无法重写,与abstract相违背。
2.static:静态优先于对象存在,存在加载顺序问题。
3.final:被final修饰后,无法重写,与abstract相违背。
- 抽象方法
被abstract关键字修饰的方法为抽象方法,抽象方法中没有抽象体,所以不能实例化。
- 特点
- 如果一个类中包含抽象方法,那这个类必须定义为一个抽象类;
2、子类在继承了一个抽象类后,要么该子类为一个抽象类,要么子类必须将父类所有的抽象方法重写。
3、多用于多态中。
4、抽象类无法实例化。
二、示例
public class Try {
public static void main(String[] args) {
//创建一个类型为B的对象
B b = new B();
//测试
b.name();
b.ID();
}
}
abstract class A
{
//定义A的构造方法
public A()
{
System.out.println("A");
}
public abstract void name();
public abstract void ID();
}
class B extends A
{
//重写父类方法
@Override
public void name()
{
System.out.println("野兽先辈");
}
//重写父类方法
@Override
public void ID()
{
System.out.println("114514");
}
}
上述代码的运行结果为:
A
野兽先辈
114514