1.抽象类详解
package text;
/**
1.如何定义抽象类?
class关键字前加abstract
2.抽象类无法被实例化
3.虽然抽象类没有办法实例化,但是抽象类也有构造方法,该构造方法是给子类创建对象用的
4.抽象类中可以定义抽象方法
抽象方法的语法:在方法的修饰符列表中添加abstract关键字,并且抽象方法应该以“;”结束,不能带有“{}”
例如:public abstract void m1();
5.抽象类中不一定有抽象方法,但抽象方法必须出现在抽象类中
4.一个非抽象的类继承抽象类,必须将抽象类中的抽象方法实现(覆盖)
*/
public abstract class Abstract {
Abstract(){
System.out.println("a...");
}
//抽象方法
public abstract void m1();
public static void main(String[] args) {
//Abstract a = new Abstract();
//不能实例化类型 Abstract,即无法创建对象
Abstract a = new B();
}
}
class B extends Abstract {
public void m1() {
System.out.println("不要吃鸡屁股!");
}
B(){
super();
System.out.println("b...");
}
}
2.实例
package text;
public class Text {
//public abstract void m1(); //只能由抽象类来定义类型 Text 中的抽象方法 m1
public static void main(String[] args) {
//A a = new A(); //不能实例化类型 A
//D d = new D(); //不能实例化类型 D
C c = new C();
c.m2();
A a = new C();
a.m2();
}
}
abstract class S{
void m3() {
}
}
abstract class A{
A(){
System.out.println("Constructor A");
}
abstract void m2();
}
class C extends A{
C(){
System.out.println("Constructor C");
}
void m2() {
System.out.println("m2 implement");
}
//abstract void m3();
}
abstract class D extends A{
D(){
System.out.println("Constructor D");
}
}