抽象类可以只定义需要使用的方法,把不能实现的方法定义成抽象方法,留给子类去实现。
关键字 abstract
定义抽象方法:
在普通方法上增加 abstract修饰符,去掉方法体并在方法后面加上 ;。
定义抽象类:
在普通类上增加 abstract 修饰符即可。
规则:
抽象类跟抽象方法必须使用abstract修饰符,抽象方法不能有方法体。
有抽象方法的类只能被定义为抽象类。没有抽象方法的类可以定义为抽象类。
抽象类不能被实例化,能被子类继承。
抽象类里可以包含变量,普通方法,抽象方法,构造器,初始化块 内部类(接口,枚举)
抽象类的构造器不能用于创建实例,主要用于被子类调用。
关键字 abstract
定义抽象方法:
在普通方法上增加 abstract修饰符,去掉方法体并在方法后面加上 ;。
定义抽象类:
在普通类上增加 abstract 修饰符即可。
规则:
抽象类跟抽象方法必须使用abstract修饰符,抽象方法不能有方法体。
有抽象方法的类只能被定义为抽象类。没有抽象方法的类可以定义为抽象类。
抽象类不能被实例化,能被子类继承。
抽象类里可以包含变量,普通方法,抽象方法,构造器,初始化块 内部类(接口,枚举)
抽象类的构造器不能用于创建实例,主要用于被子类调用。
注意:
abstract 跟 final 有仇,不能在一起。
abstract 跟private 有仇,同样不能在一起。
abstract 跟 static 在方法里有仇,(只有方法!!!)不能在一起,但他们可以同时修饰内部类。
作用:
利用抽象类和抽象方法,可以更好的发挥多态的优势 可以让程序更加灵活。
抽象类不能创建实例,只能被当成父类继承。
抽象类作为子类的模板,可以避免子类设计的随意性。
abstract 跟 final 有仇,不能在一起。
abstract 跟private 有仇,同样不能在一起。
abstract 跟 static 在方法里有仇,(只有方法!!!)不能在一起,但他们可以同时修饰内部类。
作用:
利用抽象类和抽象方法,可以更好的发挥多态的优势 可以让程序更加灵活。
抽象类不能创建实例,只能被当成父类继承。
抽象类作为子类的模板,可以避免子类设计的随意性。