java 继承覆盖,java中的继承和覆盖

继承

作用:缩减代码,简化重复代码

通过关键字extends来实现,格式如:class 子类 extends 父类{}

继承的本质

子类继承父类之后,实例化子类对象的时候,系统会首先实例化父类对象,而此时调用的是父类没有参数的构造函数,如果父类的构造函数带有参数,我们可以使用super给父类构造函数传参数,“super();”必须写在子类构造函数的第一句,传入的参数必须和父类构造函数中参数列表类型匹配;也可以给父类增加一个不带参数的空构造函数。例:

packageextends1;classDialog{protectedString title;//public Dialog(){}改错方法2:不带参数的构造函数

publicDialog(String title){this.title =title;

}public voidshow(){

System.out.println(title+"对话框显示");

}

}class FontDialog extendsDialog{privateString fontName;public FontDialog(String title,String fontName){//报错//super(title);改错方法1:super传参数

this.title =title;this.fontName =fontName;

}

}public classMain {public static voidmain(String[] args){

FontDialog fd= new FontDialog("字体","宋体");

}

}

注:1、如果一个成员要被子类继承之后使用,这个成员不能是 private 的,因为私有的成员不能在类的外部使用,当然也不能被子类使用。一般,成员变量定义为 protected类型,成员函数定义为 public 类型。

2、Java 不支持多重继承,一个子类只能有一个父类,不允许出现:class 子类 extends 父类 1,父类 2 {}

3、Java 中可以有多层继承,比如 A 继承了 B,B 又继承了 C。此时相当于 A 间接继承了 C。

成员覆盖

一般发生在子类继承父类的成员函数之间(成员变量之间一般很少使用),当子类函数的定义和父类相同时(名称相同,参数列表相同,返回类型相同),最后调用的是子类中的方法,这叫做覆盖或重写(Override)。

注:1、如果在子类中定义了一个名称和参数列表与父类相同的函数,但是返回类型不同,此时系统会报错。

2、 在重写时,子类函数的访问权限不能比父类的更加严格。比如,父类的成员函数访问权限是 public,子类重写时,就不能定义为 protected。

3、在覆盖的情况下,如果一定要在子类中调用父类的成员函数,可以使用 super关键字,调用父类的成员函数方法是:super.函数名。

成员覆盖的作用

在不改变源代码的情况下,能够对一个模块的功能进行改造。对父类进行继承时,拥有的一部分功能无法完全满足需要,我们就可以通过覆盖完善。例:

现有:

packageextends2;public classImageOpe {public voidread(){

System.out.println("从硬件读取图像");

}public voidhandle(){

System.out.println("图像去噪声");

}public voidshow(){

System.out.println("显示图像");

}

}

我们需要:

packageextends5;public class MyImageOpe extendsImageOpe{public void read(){//进行重写

System.out.println("从文件读取图像");

}public void handle(){//继承后加改造

super.handle();

System.out.println("图像锐化");

}public void show(){//继承

super.show();

}

}public classMain {public static voidmain(String[] args){

MyImageOpe mio= newMyImageOpe();

mio.read();

mio.handle();

mio.show();

}

}

输出为:

从文件读取图像

图像去噪声

图像锐化

显示图像

原文:https://www.cnblogs.com/541wsy/p/12511827.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值