关于Java类的重载和重写的理解
环境
Linux, Win, Java
类的继承
- Java中,所有的类都有一个默认的父类Object。
- 继承关系中一般两个角色,父类和子类,其中父类也叫基类,子类也叫派生类。
- 同时子类可以增加子类特有的属性和方法,并且子类可以重写父类的方法。
- 使用继承首先可以减少大量的重复性代码,把公共的代码提取出来放到父类中同时也方便管理。
- 父类的私有属性和构造方法并不能被继承
重写
- 重写是子类对父类的允许访问的方法的实现过程进行重新编写。
- 重写的好处是子类能够根据需要实现父类的方法。
- 发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类。
- 如果父类方法访问修饰符为 private 则子类就不能重写该方法。
- 父类构造方法默认为private隐性修饰,所以 Constructor 也就不能被 override(重写)。
重载
- 父类的私有属性和构造方法并不能被继承,,但是可以 overload(重载),可以理解为多态, 所以你可以看到一个类中有多个构造函数的情况。
- 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。
举个栗子
public class Animal {
private Integer age;
public Animal(){ // 构造方法
System.out.println("Animal construct method");
}
public Animal(int age){ // 构造方法的重载
this.setAge(age);
System.out.println("Animal construct method set age:"+this.getAge());
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public void eat(){
System.out.println("eat...");
}
}
继承父类
public class Cat extends Animal{
public void eat(){
System.out.println("Cat eat...");
}
}
评论区