1、前言
某些情况下,父类只是知道子类应该有什么方法,而不知道具体如何实现。
eg:Shape类中应该有个计算周长的方法,而不同的子类由具体不同的实现;
***解决1:
不管父类,直接在子类中定义方法;
产生的问题:
假设有一个Shape类引用变量,而实际引用的是Shape类子类的实例(Shape s=new ShapeZi();),当s调用计算周长方法时,必须进行强制转换,才可以调用,降低程序的灵活性;
***解决2:
使用抽象方法;
2、抽象类、抽象方法的规则:
1.1 抽象类、抽象方法必须使用abstract修饰,抽象方法不能有方法体;
1.2 抽象类不能被实例化(即使抽象类中有构造器、抽象类中只有普通方法);
1.3 抽象类中可以包含 属性、构造器、初始化块、内部类、枚举、方法(普通方法、抽象方法);