抽象类的特点:
1.当方法只有声明没有具体实现的时候,需要用abstract修饰符修饰。抽象方法必须定义在抽象类当中,所以抽象类也需要用abstract修饰
2.抽象类不可以被实例化,为什么呢?
因为调用抽象方法没有意义
3.抽象类的子类必须覆盖所有的父类的抽象方法之后,子类才能够被实例化,否则子类也还是抽象类;
class A extends chouxiang {
@Override
void bark() {//只有覆盖了bark()方法,才能将A类实例化
// TODO Auto-generated method stub
System.out.println("你说呢");
}
}
public abstract class chouxiang {
abstract void bark();//必须让子类重写才有意义
private int bark(int a, int b) {//抽象类中可以有非抽象方法,即不需要子类必须重写该方法
return a + b;
}
public static void main(String[] args) {
A a = new A();
a.bark();//调用的是重写的无参的bark()方法
}
}
- 抽象类中有构造函数吗?
有,用于对子类的初始化
- 抽象类中可以没有没有抽象方法吗?
可以,但是很少见,目的就是不让子类创建对象
- 抽象类不可以和哪些关键字使用
1.private:父类中的private修饰的方法对于子类不可见,即子类无法对方法进行覆盖
2.static:当使用static修饰的时候,就可以直接使用类名调用该方法了,那就不用让子类进行实现了;除此之外,即便直接调用了也只是一个方法声明,并没有意义。
3.final:abstract的意义在于让子类对修饰的方法进行覆盖,但是final却是不让方法进行覆盖,两者矛盾
- 抽星类一定是个父类吗
是的,因为需要其子类覆盖其方法才有意义
时间: 2024-11-05 15:48:59