首页 >>  正文

类包含的原则是子类不能大于它所属的母类

来源:www.zuowenzhai.com    作者:编辑   日期:2024-06-17

个人观点:子类重写父类方法,假设子类和父类都有抛出异常的逻辑。

假设父类抛出了IOException,而子类抛出了Exception(包含IOException),你可以想象一张小渔网怎么能网住一头鲸鱼,这就是子类抛出异常必须是父类异常的派生类的原因。

所以从返回上说,可以推出子类方法返回值类型不能大于父类方法,因为返回时抛出的异常必须能被父类捕获。

再补充一点:为什么重写还有一条规则是访问控制符必须高于父类?那是因为为了多态的实现。有时候父类需要上转型引用子类的方法实现多态,这就导致子类方法的访问控制符必须高于父类,否则子类里写成了private,父类还怎么访问?

同理,子类方法返回值类型小于父类,因为父类引用子类方法实现多态,你不能让一个返回空的方法的返回值经过一个不能返回空的方法出去。

方法覆盖的原则:

1:子类中的方法名必须跟父类中的相同,参数列表也必须相同。

2:返回类型只有两种情况:

a:和父类相同。

b:是父类中返回类型的子类。

3:子类方法的访问权限,必须比父类方法的访问权限更大或者相同,但是必须注意如果父类访问权限是private,子类是继承不到的。所以不存在覆盖的概念。

如果说返回值类型都不相同或者不是其返回类型的子类 那么就不能称之为方法的覆盖。




17368066592类包含的原则是子类不能大于它所属的母类
黄郑玛答:3:子类方法的访问权限,必须比父类方法的访问权限更大或者相同,但是必须注意如果父类访问权限是private,子类是继承不到的。所以不存在覆盖的概念。如果说返回值类型都不相同或者不是其返回类型的子类 那么就不能称之为方法的覆盖。

17368066592java中方法重写时,子类返回类型不能大于父类,这句话只针对类类型吗...
黄郑玛答:重写方法不能抛出新的异常或者比被重写方法声明的检查异常更广的检查异常。但是可以抛出更少,更有限或者不抛出异常。

17368066592简述方法重载和方法重写的区别
黄郑玛答:2.子类抛出的异常下不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)4.**静态只能重写静态。但是这种情况一般不会出现。方法重载概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不...

17368066592面向对象编程三大特性-封装、继承、多态
黄郑玛答:对于Java而言,它多态的实现机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。 3.3 实现形式 在Java中有两种形式可以实现多态:继承和接口。 3.2.1、基于继承实现的多态 基于继...

17368066592什么体现了类的多态性?
黄郑玛答:* 指向了子类subB的一个实例,因而(1)所调用的fun()实际上是子类subB的成员方法fun(), * 它覆盖了超类superA的成员方法fun();同样(2)调用的是子类subC的成员方法fun()。 * 另外,如果子类继承的超类是一个抽象类,虽然抽象类不能通过new操作符实例化, * 但是可以创建抽象类的对象引用指向子类对象,以实现运行...

17368066592在JAVA中有两种多态指的是什么
黄郑玛答:取决于子类是否覆盖父类方法.如果子类覆盖父类方法,则执行子类方法;如果没有覆盖,则执行父类方法.在编译时,仅仅依据对象所属的类,系统无法确定到底应该执行那个类的方法,只有运行时才能确定,因此这是运行时多态.父类对象并不能执行所有的子类方法,只能执行那些父类中声明\子类覆盖的子类方法....

17368066592JAVA提供的两种程序类型是什么?
黄郑玛答:取决于子类是否覆盖父类方法.如果子类覆盖父类方法,则执行子类方法;如果没有覆盖,则执行父类方法.在编译时,仅仅依据对象所属的类,系统无法确定到底应该执行那个类的方法,只有运行时才能确定,因此这是运行时多态.父类对象并不能执行所有的子类方法,只能执行那些父类中声明\子类覆盖的子类方法....

17368066592什么是抽象方法?
黄郑玛答:覆盖实现则可以创建子类的对象。 静态方法和final方法都不能声明为抽象。 数据抽象方法的定义 数据类型是和数据结构密切相关的一个概念。它最早出现在高级程序设计语言中,用以刻划程序中操作对象的特性。在用高级语言编写的程序中,每个变量、常量或表达式都有一个它所属的确定的数据类型。类型显式地或隐含地规定了...

17368066592java里的一点东西
黄郑玛答:楼上的,写得多并不代表很有用嘛..首先这里有两个类,代码看似简单,创建一子类保存在父类的引用中...代码从右往左看.好戏开始..首先new 了一个类new ZiLei().JAVA中每当你new一个类的时候都会检查它的父类,没父哪能有子...于是找到它的父类,也就是Fulei.所以,这段代码中虽然没有new Fulei(...

17368066592java中类的定义格式,类的常用修饰符及其含义是什么?
黄郑玛答:不能被实例化。如果是一个abstract方法,则方法体 为空,该方 法的实现在子类中被定义,并且包含一个abstract方法的类必须是一个abstract类 6.protected 使用对象:成员 介绍:成员只能在定义它的包中被访问,如果在其他包中被访问,则实现这个方法的类 必须是该成员所属类的子类。


(编辑:宁莉连)
联系方式:
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图
@ 作文摘要网