面向对象(三)
抽象类 假如定义一个shape类,这个类提供一个计算周长的方法,但不同Shape子类对周长的计算方法都不一样。既然Shape类不知道如何实现计算周长的方法,干脆就不管了。但如果利用多态来对Shape引用变量指向子类对象方式,Shape变量无法调用计算周长的方法,必须将其强制类型转换为子类类型才可调用,这就降低了进程的灵活性。 Java提供了抽象方法让类包含某个方法又不需要提供方法具体实现。 抽象方法:方法必须使用abstract修饰符来修饰,抽象方法只能存在与抽象类中,但抽象类可以没有抽象方法。 (1) 抽象方法和抽象类规则 (1) 抽象类必须使用abstract修饰符修饰,抽象方法也必须使用abstract修饰符修饰, 抽象方法不能有方法体。 (2) 抽象类不能被实例化。 无法使用new关键字来调用抽象类的构造器创建抽象类的对象。 (3) 抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接口、枚举)。 抽象类的构造器不能用于创建对象,用于被其子类调用。 (4) 有抽象方法的类一定是抽象类。 ###(2) 抽象类如何被实例化 以多态的形式,由具体的子类实例化 123456789101112131415 abstract class Animal{ public abstract void eat();}class Cat extends