20200710

区分子类方法中重名的三种变量

局部变量:                 直接写成员变量名

本类的成员变量:       this.成员变量名

父类的成员变量:       super.成员变量名

public class Fu {
    int num = 10;
}
public class Zi extends Fu{
    int num = 20;

    public void method(){
        int num = 30;
        System.out.println(num);//30 局部变量
        System.out.println(this.num);//20 本类的成员变量
        System.out.println(super.num);//10 父类的成员变量
    }
}
public class Demo01ExtendsField {
    public static void main(String[] args) {
        Zi zi = new Zi();
        zi.method();
    }
}

在父子类的继承关系中,创建子类对象,访问成员方法的规则:

创建的对象是谁,就优先用谁,如果没有则向上找

注意事项:

无论是成员方法还是成员变量,如果没有都是向上找父类,绝对不会向下找子类的

重写(Override)

概念:在继承关系中,方法的名称一样,参数列表也一样

重写(Override):方法的名称一样,参数列表也一样。覆盖、覆写

重载(Overload):方法的名称一样,参数列表不一样

方法的覆盖重写特点:创建的是子类对象,则优先用子类方法

方法覆盖重写的注意事项

  • 必须保证父子类之间方法的名称相同,参数列表也相同
  • @Override:写在方法前面,用来检测是不是有效的正确覆盖重写

        这个注解就算不写,只要满足需求,也是正确的方法覆盖重写

  • 子类方法的返回值必须小于等于父类方法的返回值范围

        前提:java.lang.Object类是所有类的公共最高父类(祖宗类),java.lang.String就是Object的子类

  • 子类方法的权限必须大于等于父类方法的权限修饰符

        public > (default) > private

        备注: (default)不是关键字default,而是什么都不写,留空

//本来的老款手机
public class Phone {
    public void call(){
        System.out.println("打电话");
    }
    public void send(){
        System.out.println("发短信");
    }
    public void show(){
        System.out.println("显示号码");
    }
}
//定义一个新手机,使用老手机的父类
public class NewPhone extends Phone{
    @Override
    public void show(){
        super.show();//把父类的show方法拿过来重复利用
        //自己子类再来添加更多内容
        System.out.println("显示姓名");
        System.out.println("显示头像");
    }
}
public class Demo03Phone {
    public static void main(String[] args) {
        Phone phone = new Phone();
        phone.call();//打电话
        phone.send();//发短信
        phone.show();//显示号码
        System.out.println("==============");

        NewPhone newPhone = new NewPhone();
        newPhone.call();//打电话
        newPhone.send();//发短信
        newPhone.show();//显示号码 显示姓名 显示头像
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值