之前把抽象类和接口放在一起讲了,觉得还是太草率了,现在重新简单地讲一下这个抽象类吧。
如何定义抽象类? class关键字前加abstract抽象类无法被实例化虽然抽象类没有办法实例化,但是抽象类也有构造方法,该构造方法是给子类创建对象用的。 public abstract class A{ //Constructor A(){ System.out.println("A..."); } //入口 public static void main(String[] args) { //抽象类无法创建对象 //A a=new A(); //多态 A a=new B(); } } class B extends A{ B(){ super();//父类的构造方法虽然调用了,但是并没有创建父类对象 System.out.println("B..."); } }运行结果为: A… B…
抽象类中可以定义抽象方法。 抽象方法的语法:在方法的修饰符列表中添加abstract关键字。并且抽象方法应该以分号结束,不能带有大括号{} 例如:public abstract void m1();
抽象类中不一定有抽象方法,但抽象方法必须出现在抽象类中。
一个非抽象的类继承抽象类,必须将抽象类中的方法覆盖,实现,重写。
public abstract class A{ //Constructor A(){ System.out.println("A..."); } //抽象方法 public abstract void m1() ; //入口 public static void main(String[] args) { //抽象类无法创建对象 //A a=new A(); //多态 A a=new B(); } } class B extends A{ public void m1() { } B(){ super();//父类的构造方法虽然调用了,但是并没有创建父类对象 System.out.println("B..."); } } 抽象类不能被final修饰,抽象方法不能被final修饰 public /*final */abstract class A{ public/* final */abstract void m1(); }妙啊