JAVA冲刺复习之方法的重写
发生在子类和父类中,只要子类对父类的方法不满意,要对父类的方法进行重写。
方法重写的格式:
子类的方法名字和父类必须一致,参数列表(个数,类型,顺序)也要和父类一致。
重载和重写的区别:
重载是指在同一个类中,当方法名相同,形参列表不同时,多个方法构成了重载。
重写是在不同类中,当子类继承父类时,对父类的方法不满意,进行重写方法。
代码实现:
父类:
package ChongXie;
public class Person {
private String name;
private int age;
public String getName() {//给name提供一个读取方法
return name;
}
public void setName(String name) {//给name提供一个赋值方法
    this.name = name;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
public Person(){
}
public Person(String name,int age){
    this.name=name;
    this.age=age;
}
public void eat(){
    System.out.println("人类要吃饭");
}
}
System.out.println("000000000000000000000000000000000000000000000000000000000000000000");
子类:
package ChongXie;
public class Student extends Person {
/*
注意:如果不在子类里定义构造方法就不能直接使用 Student s = new Student("某某", 11);
原因很简单:
因为你 没有在 Student 类中定义一个带参数的构造方法
(即 public Student(String name, int age)),
所以 Java 编译器就不会自动给你生成这个构造方法。
解决办法:手动添加带参数的构造方法,并调用父类的构造函数 super(name, age)
就可以在测试类里那么写了
*/
public Student(){
}
public Student(String name,int age){
super(name,age);
}
// 可以重写 eat 方法
public void eat() {
System.out.println("学生也要吃饭");
}
}
System.out.println("000000000000000000000000000000000000000000000000000000000000000000");
测试类:
package ChongXie;
public class Test {
public static void main(String[] args) {
Student s=new Student("王五",11);
System.out.println(s.getName());
System.out.println(s.getAge());
s.eat();
}
}
System.out.println("000000000000000000000000000000000000000000000000000000000000000000");
运行结果:
王五
11
学生也要吃饭
                    
                
                
            
        
浙公网安备 33010602011771号