object类
Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法。
Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承 Object,成为 Object 的子类。
Object 类可以显式继承,也可以隐式继承,以下两种方式是一样的:
覆盖
覆盖是指子类定义了与父类中同名、同参数类型、同返回类型的方法,从而覆盖了父类中的方法。覆盖后,当通过子类的对象调用该方法时,将会执行子类中定义的方法,而不是父类中的方法。
使用方法覆盖可以实现多态性,即同一个方法名在不同的子类中实现不同的行为。
规则:
-
子类方法的访问修饰符不能低于父类方法的访问修饰符;
-
子类方法的返回类型必须与父类方法的返回类型相同或为其子类;
-
子类方法的参数类型、顺序和个数必须与父类方法完全相同;
-
子类方法不能抛出比父类方法更多或更宽泛的异常,但可以不抛出任何异常或只抛出父类方法中抛出的异常,或者抛出其子类异常(即具有更严格的限制)。
抽象方法
将共性的行为(方法)抽取到父类之后。由于每一个子类执行的内容是不一样,所以,在父类中不能确定具体的方法体。该方法就可以定义为抽象方法。
抽象类
如果一个类中存在抽象方法,那么该类就必须声明为抽象类 。
注意:1.抽象类不能实例化
2.抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
3.可以有构造方法
4.抽象类的子类要么重写抽象类中的所有抽象方法,要么是抽象类。
作用:
抽取共性时,无法确定方法体,就把方法定义为抽象的。
强制让子类按照某种格式重写。
抽象方法所在的类,必须是抽象类。
抽象类和抽象方法的格式:
public abstract 返回值类型方法名(参数列表);
public abstract class 类名