继承中方法重写/方法覆盖Override、super关键字、Overload与Override的区别、this与super的区别

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013317445/article/details/81609846

方法重写:子类中出现了与父类中声明一样的方法。也叫方法覆盖。
应用:当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类中的方法。
这样,即沿袭了父类的功能,又定义了子类特有的功能。

/*
    满足“新手机is a 手机”,新手机可以继承手机
    新手机的call功能,相比旧手机的,添加了它特有的内容。
*/  
class Phone{
    public void call(String name){
        System.out.println("打电话给"+name);
    }

}

class NewPhone extends Phone{
    public void call(String name)){

        //System.out.println("打电话给"+name);
        super.call(name);           //super关键字(代表父类空间的标识),访问父类的方法

        System.out.println("播放音乐:贝加尔湖畔");
    }
}

class ExtendsDemo3{
    public static void main(String[] args){
        NewPhone np= new NewPhone();
        np.call("李健");
    }
}

注意事项:

  • 父类中私有方法不能被重写。因为父类私有方法子类根本无法继承。
  • 子类重写父类时,访问权限不能更低。最好就一致。
  • 父类静态方法,子类也必须通过静态方法进行重写。(其实这个算不上方法重写,但是现象确实如此。至于为什么算不上方法重写,见多态。)

方法重写override和方法重载overload的区别?

方法重载:同一个类中,出现的方法名相同,参数列表(参数个数或参数类型)不同。
方法重写:在子类中,出现和父类不一样的方法声明的方法。

this关键字和super关键字的区别?用法?

this关键字:代表对当前类的对象的引用。
super关键字:代表父类存储空间的引用。(可以理解为父类的引用,通过这个东西可以访问父类的成员)
用法:

 访问成员变量: 
        this.成员变量  super.成员变量 
 访问构造方法:
        this(...)   super(...) 
 访问成员方法:
        this.成员方法() super.成员方法()
展开阅读全文

没有更多推荐了,返回首页