抽象类

package dchouxianglei;

/*
 * 1、如何定义抽象类
 *     class关键字前加abstract - public abstract class A {}
 * 
 * 2、抽象类无法被实例化 - A a = new A();
 * 
 * 3、虽然抽象类没有办法实例化,但是抽象类也有构造方法,该构造方法是给子类创建对象使用的 - 默认有super();
 * 
 * 4、抽象类中可以定义抽象方法
 *         抽象方法的语法:在方法的修饰符列表中添加abstract关键字,
 *         并且抽象方法应该以";"结束,不能带有"{}" - public abstract void m1();
 * 
 * 5、抽象类中不一定有抽象方法,但抽象方法必须出现在抽象类中。
 * 
 * 6、一个非抽象的类继承抽象类,要将抽象类中的抽象方法覆盖,实现,重写 - public void m1(){}
 */
public abstract class A {

    //构造方法
    public A(){
        System.out.println("A...");
    }
    
    //抽象方法
    public abstract void m1();
    
    //入口
    public static void main(String[] args) {
        
        //抽象类无法创建对象
        //A a = new A();
        
        //多态
        A a = new B();
    }
}
package dchouxianglei;

public class B extends A{

    public void m1(){
        
    }
    
    B(){
        //默认有super();
        //父类的构造方法虽然调用了,但是并没有创建父类对象
        System.out.println("B...");
    }
}
package dchouxianglei;

/*
 * 抽象类不能被final修饰
 * 抽象方法不能被final修饰
 */
public /*final*/ abstract class C {

    public /*final*/ abstract void m1();
}

 

posted @ 2020-08-13 20:12  Lerresino  阅读(127)  评论(0)    收藏  举报