java基础学习之——子类重写(覆盖)父类的方法必须满足的条件

Java 学习之路 重写父类方法 子类扩展了父类,子类是一个特殊的父类。一般使用中,子类总是以父类为基础,额外增加成员变量和方法。但是,有的时候需要重写父类的方法!回忆之前的关系图,黄上、红桃、公老虎和母老虎,假设赋予猫科动物会爬树,但是老虎不会,所以,老虎要把猫科动物会爬树,这一个“方法”重写为老虎会游泳! ... 阅读详情
子类重写(覆盖)父类的方法必须满足的条件:
  1. 父类中的方法在子类中必须可见,即子类继承了父类中的该方法(可以显式的使用super关键字来访问父类中的被重写的方法),如果父类中的方法为private类型的,那么子类则无法继承,也无法覆盖。
  2. 子类和父类的方法必须是实例方法,如果父类是static方法而子类是实例方法,或者相反都会报错。 如果父类和子类都是static方法,那么子类隐藏父类的方法,而不是重写父类方法。
  3. 子类和父类的方法必须要具有相同的函数名称、参数列表,并且子类的返回值与父类相同或者是父类返回类型的子类型(jdk1.5之后)。 如果方法名称相同而参数列表不同(返回类型可以相同也可以不同),那么只是方法的重载,而非重写。 如果方法名称和参数列表相同,返回值类型不同,子类返回值类型也不是父类返回值类型的子类,编译器就会报错。 
  4. 子类方法的访问权限不能小于父类方法的访问权限(可以具有相同的访问权限或者子类的访问权限大于父类)。 访问权限由高到低:public、protected、包访问权限、private。如果子类方法的访问权限低于父类,则编译器会给出错误信息
  5. 子类方法不能比父类方法抛出更多的编译时异常(不是运行时异常),即子类方法抛出的编译时异常或者和父类相同或者是父类异常的子类。

验证代码:

Person:

import java.io.FileNotFoundException;

import javax.swing.JComponent;

/**
 * 父类
 * @author Administration
 *
 */
public class Person {

	public void doSomething() {  
		  
    }  
  
    public static void doSomething1() {  
  
    }  
  
    public JComponent doSomething2() {  
        return null;  
    }  
  
    public JComponent doSomething3() {  
        return null;  
    }  
  
    public void doSomething4(int x) {  
  
    }  
    public void doSomething5() throws FileNotFoundException{  
  
    }  
      
    private void doSomething6(int x) {  
  
    }
}


Student:

/**
 * 继承Person类的子类
 * @author Administration
 *
 */
public class Student extends Person{

	//父类中该方法是私有的,对子类不可见,所以子类无法继承和覆盖父类的私有方法  
    //在这里并没有覆盖父类的私有方法,而是在子类中创建了一个新的和父类同名的方法而已,这两个方法没有任何关系  
    private void doSomething6(int x) {  
  
    }  
      
    // 报错,父类为实例方法,子类为静态方法  
    //This static method cannot hide the instance method from Pareant  
    public static void doSomething() {  
  
    }  
  
    // 报错,父类为静态方法,子类为实例方法  
    //This static method cannot hide the instance method from Pareant  
    public void doSomething1() {  
  
    }  
  
    // 正确,父类的返回值为JComponent,是子类返回值类的父类,从jdk1.5开始,重写父类方法时的返回值可以与父类相同,也可以是父类的子类  
    public JButton doSomething2() {  
        return null;  
    }  
  
    // 报错,父类的返回值为JComponent,子类返回值类型为int,子类返回值与父类返回值类型不同,也不是父类返回值的子类  
    //The return type is incompatible with Pareant.doSomething3()  
    public int doSomething3() {  
        return 1;  
    }  
      
    //报错,父类的访问权限为public,子类为protected,子类的访问权限不能低于父类,可以高于或者等于父类的访问权限  
    //Cannot reduce the visibility of the inherited method from Pareant  
    protected void doSomething4(int x) {  
  
    }  
    //报错,子类不能抛出比父类更多的异常,父类抛出FileNotFoundException异常,子类抛出的IOException是父类异常的父类  
    //子类只能抛出和父类一样的异常,或者是父类异常的子类,而不能超过父类  
    //Exception IOException is not compatible with throws clause in Pareant.doSomething5()  
    public void doSomething5() throws IOException{  
  
    } 
}

转自:http://blog.youkuaiyun.com/tongyuehong137/article/details/45287247

cesium加载天地图、OSM、谷歌底图 以上示例是加载矢量底图,若要加载影像或者其他只需要更换相应的url,在WebMapTileServiceImageryProvider中还要更改layer参数。url中’‘vec_w’,一些其他风格,基于CRAT渲染,两种方法效果差别不大。有两种方法加载天地图分别是。对应投影样式,具体可看。还要谷歌的一些卫星底图。 阅读详情

相关推荐

SAP-PP MD04详解一

MD04是SAP运行MRP后的结果查询事务码,其他功能强大,标准功能比如:查询/更改物料主数据、转换计划订单到生产订单/采购申请、查询/更改各个MRP元素对应的单据等等。而且还可以附加标准的菜单或者自定义添加事务码上去。老铁将做一个MD04详细说明系列,本篇为第一篇之MRP元素说明。 我们来看看MD04基本界面 可以看到主要的数据显示界面,有日期、MRP元素、MRP元素数据、再计划日期、收货/需求、可用数量、工厂、库存地点等栏位。光标定位到MRP元素列,按F1即可看到各类MRP元素的说...

weixin_52158549的博客 1万+

python面向对象的使用方法

class Person: # 父类或者基类 # 如果在类定义中没有指定父类,则默认父类是 object 类。也就是说,object 是所有类的父类,里面定义了一些所有类共有的默认方法,比如:__new__()。 def __init__(self, name, age, height): # 在一个类中可以建立两个构造函数__init()吗?可以,但是写在上面的会被下面的重写,上面的会失效,一般不这样写。 self.name = name

gdd1990shl的博客 232

数据可视化—power bi 基础操作汇总

数据来源: https://pan.baidu.com/s/1U_Y7rKfhnSKbLmh4FcUD_Q 提取码: yq5v 目录 基本功能与视图 编辑与查询—修改column案例 建立关联性 新增column与DAX完成总价运算 习题练习1:建立可视化图表 产品销售统计图 column拖曳可视化 1.基本功能与视图 ①基础操作界面 ②获取数据—以打开excel为例 ③数据文件基本视图 可视化形式:柱状图、数据、关联性 2.编辑与查询—修改column ①编辑与查询—数据处理界面 .

weixin_52730784的博客 2683

Java中子类重写(overwriting)父类的方法

一、子类和父类的关系 1、构造方法 子类在新建对象时,首先调用父类的构造方法,然后调用自己的构造方法。 2、成员变量 (1)子类可以继承父类public和protected修饰的成员变量和成员方法。 (2)子类覆盖父类的成员变量 3、成员方法 子类覆盖父类的同名同参数列表方法(重写),可以利用super调用父类被覆盖方法。 4、类型转换 (1)子类转父类(向上转换) 例如:B是继承A的子类,对于如下对象: class A { } class B extends A { } A A1

hehahhe1227的博客 1万+

深入解析USBlyzer抓包工具:从设备描述符到数据交互实战

本文深入解析了USBlyzer抓包工具在USB协议分析中的应用。从设备描述符的抓取与解读,到设置地址、配置描述符的实战分析,再到数据交互阶段的抓包技巧,文章通过具体案例详细展示了如何使用USBlyzer透视USB总线通信,是排查设备驱动问题、逆向分析通信协议和学习USB规范的实用指南。

weixin_29171087的博客 741

PWM调光原理详解:为什么你的LED灯会闪烁?从硬件到软件的避坑指南

本文深入解析PWM调光原理,揭示LED灯闪烁的根本原因,并提供从硬件设计到软件算法的全面解决方案。通过分析人眼视觉暂留机制和PWM参数设置,帮助开发者避免频闪问题,提升照明质量。特别适合电子工程师和智能家居开发者参考。

weixin_29189363的博客 293

方法重写/覆盖(override)

2)子类方法的返回类型和父类返回类型一样,或者是父类返回类型的子类;方法覆盖(重写):子类的一个方法和父类的某个方法的。一样,我们就说子类的这个方法覆盖了父类的方法。3)子类方法不能缩小父类方法的访问权限;,子类 方法返回类型是。

Labrador_Katie的博客 404

SoC设计中的RDC陷阱:如何避免异步复位导致的亚稳态问题

本文深入探讨了SoC设计中由异步复位引发的复位域交叉(RDC)陷阱及其导致的亚稳态风险。通过分析实际案例,文章系统性地提出了以同步复位优先、异步复位同步释放为核心的设计原则,并介绍了电路级加固与验证策略,为构建稳健的SoC复位架构提供了实用指南。

weixin_29280657的博客 419

java不能覆盖父类的_java中子类覆盖父类方法所必须满足的条件

一、描述子类重写(覆盖)父类的方法必须满足的条件:1.父类中的方法在子类中必须可见,即子类继承了父类中的该方法(可以显式的使用super关键字来访问父类中的被重写的方法),如果父类中的方法为private类型的,那么子类则无法继承,也无法覆盖。2.子类和父类的方法必须是实例方法,如果父类是static方法而子类是实例方法,或者相反都会报错。如果父类和子类都是static方法,那么子类隐藏父类的...

weixin_29997937的博客 2758

【DRAM存储器四十六】LPDDR5介绍--基本操作之行操作、读、写

简述LPDDR5的行操作和读写时序

highman110的博客 764

LLC型自驱动半桥谐振变换器:电压电流变化与自然换向解析

变换器的工作状态经历了多个阶段,从模态一的关断状态,到模态二和三的电流供电状态,每个阶段都得到了合理的设计和优化。的工作原理,尤其是在半个周期内的电压和电流变化。上图 展示了该变换器在工作时的电压和电流波形,它为我们揭示了变换器如何通过精确的电流和电压控制,优化性能并实现高效能转换。,并根据负载情况调整电流和电压的工作模式,能够极大提升变换器的效率,尤其是在零电压开通和自然换向的设计中,发挥着关键作用。这意味着,电流会随着时间周期的变化,呈现典型的振荡波形,从而达到良好的电流控制。是两个关键的电流变量。

weixin_43199439的博客 279

[JAVA]覆写中的关键字----super与final

                                                                                                                                                                                                       ...

hgelin的博客 275

自适应滤波器在噪声消除中的应用:系统设计与实现

本文设计并实现了一种基于LMS算法的自适应噪声消除系统,能够有效消除周期性背景噪声,提升信噪比10dB以上。系统采用模块化设计,包含音频输入、自适应滤波、信号分析和可视化等核心模块,支持实时处理与参数动态调整。通过Python实现,提供图形界面进行参数设置、频谱对比和音频播放功能,为语音增强提供了一种实用解决方案。

huanghm88的专栏 128

java中子类覆盖父类方法所必须满足的条件

一、描述  子类重写(覆盖)父类的方法必须满足的条件:  1.父类中的方法在子类中必须可见,即子类继承了父类中的该方法(可以显式的使用super关键字来访问父类中的被重写的方法), 如果父类中的方法为private类型的,那么子类则无法继承,也无法覆盖。 2.子类和父类的方法必须是实例方法,如果父类是static方法而子类是实例方法,或者相反都会报错。 如果父类和子类都是static方法,那么子类...

happydecai的博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

子类可以重写父类的private方法吗

“private是私有的,其他类是不能访问的,子类也不可以访问,所以你可以重新实现父类的该方法,不会有冲突,但是你重新实现的方法,不叫重写也不叫重载,是一个该子类新增的方法,和子类的一般扩展方法一样” public class A { private void print() { System.out.println("A"); } public static void main(String[] args) { A a = new B(); .

一蓑烟雨任平生 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java 子类覆盖了父类方法 能有什么办法调用父类的方法_一文读懂Java语言方法的重写(覆盖、Override)...

很多初学Java语言的小伙伴,在学到“面向对象”这块内容的时候,都会学到的一个概念,那就是“方法的重写”。重写又叫覆盖,英文名为“Override”。虽然”重写”、 ”覆盖”、“Override”这些名词都很容易记住,但很多人并没有真正理解Java语言为什么要提供“重写”这种编程机制,也不知道什么时候该重写父类中的方法,下面我们通过一篇文章来全面学习一下“方法的重写”。假设有一个类叫做Father...

weixin_39966130的博客 2631

Java 子类方法覆盖(重写)了父类的方法 Java子类重写父类方法后,还能不能调用父类的方法(方法未被重写之前的方法) 答案是当然是可以的啦

先讲一讲方法的重写(覆盖)  在java中方法的重写是建立在java类的三大特性之一:继承性的基础之上的,没有继承性也就不能谈方法的重写。方法的重写是当程序中父类的某一个方法并不能满足子类的需求时,子类可以重新定义该方法的内容与功能来满足子类的需求的一种操作。 所谓方法的覆盖(重写)即父类中有一个方法在子类中有一个和父类一模一样的方法(注意哈我这里又是父类又是 子类的当然是需要继承的(extends)) 下面既有方法的重写也有方法的调用未被重写之前的方法(还有注意重写方法请不要在main方法中重写m

weixin_45860403的博客 7824

java 通过子类怎么调用父类已经被重写的方法

= =今天看书看到覆盖和重载 我就在想能不能再实例化的子类中调用父类已经被覆盖的方法 百度了很久 除了说super  貌似就不行了   也能在子类中做一个新方法来调用父类已经被覆盖的方法   例如: import java.io.BufferedReader; public class baidu extends Search { public static

f330468286的专栏 1万+

java中的继承——父类与子类的关系

父类引用指向子类对象时

Loobeeke的博客 1万+

Java的父类静态方法可以被子类继承和重写(覆盖)吗?

先给出答案:可以被子类继承,不能被子类重写。 关于父类和子类关系还不太了解的看一去看一下链接https://blog.youkuaiyun.com/qq_34826261/article/details/97635047,里面详细解释了父类和子类不同情况下成员方法和成员变量的关系。这里默认已经知道了子类和父类之间的关系。 那么子类能不能重写父类的静态方法? class parent{ public stat...

qq_34826261的博客 1万+

java 子类继承父类、方法的重写(覆盖)

 java子类继承父类、方法的重写(覆盖)   在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。 格式: class 子类 extends 父类 {} public class Text { public static void main (String[] args) { new newPhone().showNum(); } } //父类 手机 c...

时光的时的博客 3万+

java子类可以修改父类成员吗_子类重写父类成员方法

最近在学习到Java的继承和多态时遇到了这样的一个问题:关于继承链中子类对父类的私有方法是否可以覆盖的问题,在此记录一下自己对这个问题解决以后的一些心得。首先要明确:子类是不能够覆盖(重写)父类的私有方法的。比较直观的理由是,子类要能够重写父类的方法的前提条件是继承,子类对父类的私有方法并不继承,也没有访问权限,自然也是不能重写的。接下来看一个例子:[java] view plaincopypub...

weixin_30678145的博客 4323

重写父类方法、super关键字、调用父类构造器——Java

注:本文参考《疯狂Java讲义》一书 重写父类方法 super 限定 子类调用父类构造器 重写父类方法子类扩展了父类,子类是一个特殊的父类。大部分时候,子类总是以父类为基础,额外增加新的成员变量和方法。但有一种情况例外:子类需要重写父类的方法。例如鸟类都包含了飞翔方法,其中有一种鸟是特殊鸟类——鸵鸟,因此它也会从鸟类获得飞翔方法,但这个飞翔方法明显不适合鸵鸟,所以,鸵鸟需要重写鸟类的方法。我们先看下

Amour 1万+

关于父类静态方法能不能被子类重写详细

这里首先声明:不能,不能,不能! 这里看了别人的博客,为了方便就直接拷了他的测试代码,并加以修改说明。 首先我们讲一下重写: 子类继承父类后可直接调用父类的方法而不用去自己定义,如父类A有add方法,则子类B没有add方法也可以实例化B b=new B();调用方法b.add().但是子类想要自己重写add方法实现新的功能的话就可以在自己的类中定义add(),这样就算是重写了父类的方法,关于

路人也是身边人的博客 1万+

Java关于子类对父类私有方法覆盖的问题

最近在学习到Java的继承和多态时遇到了这样的一个问题:关于继承链中子类对父类的私有方法是否可以覆盖的问题,在此记录一下自己对这个问题解决以后的一些心得。

FengGLA的博客 1万+

java 子类继承父类 -- 重写、覆盖与多态

1: JAVA-傻子(373481014) 15:12:26  1.同名的实例方法被覆盖 ,同名的静态方法被隐藏,child类的getName实例方法覆盖了parent的getName实例方法,chind的getKind方法隐藏了parent类的getKind方法 2.隐藏 和覆盖 的区别在于,子类对象转换成父类对象后,能够访问父类被隐藏 的变量和方法,而不能访问父类被覆盖 的方法 3.如

GeneralYY0的专栏 1万+

java子类父类方法相同调用_java 父类子类有同名方法时如何调用的实现

父类引用默认调用子类重写的方法如果父类的引用p指向了子类的实例,则通过这个引用p访问同名方法时,调用的是子类重写的方法。父类引用p可以指向不同的子类,调用不同子类重写的不同的同名方法,进而达到类间多态的效果。但是,父类的引用只能访问子类重写的方法,父类中没有的方法,父类的引用不能访问。也就是说,通过父类的引用来调用子类的方法时,不能访问到子类后来自己定义的方法。子类引用默认调用自定义的方法通过子类...

weixin_29838739的博客 4704
上一篇: final finally finalize 的区别
下一篇: Eclipse快捷键大全
Mus_Li
博客等级 码龄10年 28粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值