方法的重写/覆盖(override)

子类的方法的名字,返回类型,参数和父类的方法一样,子类就能覆盖父类的这个方法

(重写了之后父类的这个方法不受影响,父类的对象调用这个方法还是父类的这个方法,不是子类重写的方法)

细节: 

1.子类的方法的形参列表必须和父类一样

2.子类的方法的返回类型和父类一样或者是父类的子类

父:public Object getinfo(){}     子:public String getinfo(){}

String 是 Object的子类

3.子类方法不能缩小父类方法的权限(可以扩大访问权限)

【public>protect>默认>private】

package Override_;

public class OverrideExer {
    public static void main(String[] args) {
        Person person = new Person("大明",18);
        System.out.println(person.say());

        Student student = new Student("小明",10,"112233",60);
        System.out.println(student.say());
    }
}

class Person{
    private String name;
    private int age;

    //构造器
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //公开的setXX和getXX来设置和得到私有属性
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    //输出详细信息
    public String say(){
        return "名字为:"+name+"  年龄为:"+age;
    }
}

class Student extends Person{
    private String id;
    private int score;

    //构造器
    public Student(String name, int age, String id, int score) {
        super(name, age);//自动调用父类的构造器
        this.id = id;
        this.score = score;
    }

    public String say(){
//        return "名字为:"+getName()+"  年龄为:"+getAge()+"  id为:"+id+"  分数为:"+score;
        return super.say()+"  id为:"+id+"  分数为:"+score;//super调用父类的say方法,比上面的内行简洁
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值