一个特殊的机制,能让继承的子类一定要去改写某个特殊的方法--抽象
可以制定一个类中的某个方法为抽象的,不需要写方法的内容,季声明后直接以分号;结束,不加大括号!
注意:加上大括号就算括号里面没有任何程序代码,它还是完成方法的实现了!
正确的例子:abstract public void move();
一个类中只要有劳任何一个抽象的方法,那么这个类必须成为一个抽象类,其声明必须加上abstract关键字,如 abstract public class Animal
注意:abstract只能用在类和方法上,不能用在属性和一般的变量上
抽象类不能产生实例对象!!(包含未实现的方法,若可产生对象,调用到这个方法?抽象方法的实现由抽象类的子类完成。若某个类继承了一个抽象类,可是又没有实现继承下来的抽象方法,那么这个类也必须声明为抽象类)
但抽象类仍需要有构造函数!!(一个类中只有某些方法是抽象的,也许还有其他的属性成员需要初始化的动作,虽然构造函数不会被继承,不能直接调用使用,但子类要产生实例对象时,子类的构造函数往往会调用父类的构造函数)
可以制定一个类中的某个方法为抽象的,不需要写方法的内容,季声明后直接以分号;结束,不加大括号!
注意:加上大括号就算括号里面没有任何程序代码,它还是完成方法的实现了!
正确的例子:abstract public void move();
一个类中只要有劳任何一个抽象的方法,那么这个类必须成为一个抽象类,其声明必须加上abstract关键字,如 abstract public class Animal
注意:abstract只能用在类和方法上,不能用在属性和一般的变量上
抽象类不能产生实例对象!!(包含未实现的方法,若可产生对象,调用到这个方法?抽象方法的实现由抽象类的子类完成。若某个类继承了一个抽象类,可是又没有实现继承下来的抽象方法,那么这个类也必须声明为抽象类)
但抽象类仍需要有构造函数!!(一个类中只有某些方法是抽象的,也许还有其他的属性成员需要初始化的动作,虽然构造函数不会被继承,不能直接调用使用,但子类要产生实例对象时,子类的构造函数往往会调用父类的构造函数)