- 抽象类是为了满足什么需求而创建的?
对于一个父类来说,如果其某个方法在父类之中实现出来没有任何意义,
必须根据子类情况来进行不同的实现。那么就可以将当前方法声明为抽象方法,包含抽象方法的类 称为抽象类。
2、抽象类和普通类的区别:
1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
2)抽象类不能用来创建对象;
3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。
如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
3、抽象类派生的类?
(1)抽象类 可以有抽象方法 也可以有非抽象方法
abstract class Animal{
abstract void cry();//抽象方法 不做具体实现
public void fun1(){
System.out.println("Animal.fun1!!");
}
}
class Dog extends Animal{
@Override
public void cry() {
System.out.println("wangwang");
}
}
(2)如果一个抽象类 继承了一个抽象类 那么可以不实现基类的抽象方法
abstract class Cat extends Animal{
abstract public void cry();
}
(3)如果一个类 再次继承了这个抽象类 必须进行实现
class LittleCat extends Cat{
public void cry() {
System.out.println("LittleCat miaomiao");
}
}
4、抽象类 不能实例化一个对象
public class TestDemo1 {
public static void main(String[] args) {
//Animal a = new Animal();//会报错
}
}
密封类:
密封类和密封方法:类和方法 被final修饰之后,类不能被继承 方法不能被修改
密封类的优点:防止有意的派生
class Base{
public final void fun1(){
System.out.println("Base.fun1!!");
}
public void fun2(){
System.out.println("Base.fun2!!");
}
}
class Derive extends Base{
//不能重写被final修饰的方法
/*public void fun1(){
System.out.println("Derive.fun1!!");
}*/
public void fun2(){
System.out.println("Derive.fun2!!");
}
}