子类可以子类重写父类变量的protected变量吗

【java】子类不能重写父类的成员变量吗_百度知道
【java】子类不能重写父类的成员变量吗
class T1 {
int i = 0;
public void a1(){
System.out.println(i);
public void a2(){
System.out.println(i);
class T2 extends T1{
int i = 2;
public void a2(){
System.o...
不可以的话~~T2
new的新对象调a1为什么还是输出的父类的啊
我有更好的答案
对于函数来说:子类重写的话就调用子类的,否则就调用父类的对于变量来说:看你定义时候的类型。根据上两条,你再琢磨琢磨0200022
方法我是明白的~~就是成员变量~~不是很明白~~test = (T2)test向下转型后调的a1不应该是子类的了吗?
采纳率:42%
其实可以理解为变量只有继承,没有覆盖;子类中从父类继承的变量其实是supper.i,跟之类自己定义的 this.i 不冲突。
百度 java 动态绑定
T1 test = new T2();
父类对象指向子类引用,建议百度一下了解更多这种定义,成员变量是父类的,方法是子类的
那为什么把test强制转换成T2还是调用的是父类的
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
成员变量的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。请问java中子类继承父类后,子类能不能重写父类的方法_百度知道
请问java中子类继承父类后,子类能不能重写父类的方法
我有更好的答案
子类继承父类之后只能重写父类中的protected和public方法,默认没有修饰词的是friendly,同样可以重写,但是private方法就不能重写,即使子类中的方法名和父类的private方法一致,也只能看做是一个新的方法,而不是重写。override也就是重写,覆写
采纳率:26%
可以,这叫JAVA的多态性 父类:public class SuperClass { public void test(){
System.out.println(&我是父类&); }}子类:public class SubClass extends SuperClass{ public void test(){
System.out.println(&我是子类&); } public static void main(String[] args){
SubClass sub=new SubClass();
sub.test(); }}运行输出:我是子类
不能~~ 只能实现
不能重写也不能重载
如果要是非得加入的 只能算是子类的一个扩展方法
如果要是接口的话是可以的
多态的概念就是基于这一个点的~~
当然能!java中object类是所有类的父类,有谁没有重写过它的toString()方法?
为什么就不能呢?什么叫重写?重写也叫覆盖,就是在子类中覆盖掉父类的方法,所以子类的方法要求与父类方法同名,同参数类型及顺序,简单地说就是格式完全一样,但是方法内部不一样,也就是你实现的内容不一样。一旦重写以后,程序就会执行子类中的方法,就是说父类的方法已经被覆盖掉了,不会再执行了。
当然能。对于这种问题我都不想再回答了,自己试下就可以了,不用问人的。自己试过印象才深刻。
其他3条回答
为您推荐:
其他类似问题
您可能关注的内容
java的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。没有更多推荐了,
不良信息举报
举报内容:
子类继承的父类的protected方法能否被其他类调用深度解析
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!& 相关文章 &
子类重写父类的方法时声明抛出异常不能比父类范围大
子类重写父类的方法时声明抛出异常不能比父类范围大
22:47 来源 在java 中,当我们子类要重写父类中的方法,如果父类的方法有异常声明,那么子类重写这个方法时候,所要声明的异常不应该比父类的大。只能是小等,或者可以没有。原因如下。 假如我们自定意义一个异常: public class MyException extends Exception { public MyException(String message) { } public MyException
@override方法重写注意点
1. 子类中的方法的访问级别不能低于父类中该方法的访问级别(举例:父类方法的级别是protected,那么子类重写该方法,其级别必须是protected或者public,一定和父类的访问级别相同或者更宽,否则编译无法通过) 2. 子类中方法抛出的异常范围不能大于父类中方法抛出的异常的范围(子类可以不抛出异常也满足该原则,即是说父类抛出异常,子类不抛出异常,编译通过没问题。)
四、子类继承父类要注意以下几点
1、子类覆盖父类的方法时,只能抛出比父类方法更小的异常,或者是父类抛出异常的子类。 2、子类覆盖父类的方式时,权限只能比父类的方法权限更大,不能更小。
Java中子类抛出异常的规则
Java中的异常可以认为是另外一种返回值,所以也跟返回值一样,1、不算在方法签名里,2、子类的方法抛出的异常范围不能超过父类的方法抛出的异常范围,子类也可以不抛出异常(子类的方法的返回值必须与父类方法的返回值一样或是父类方法返回值的子类)。 对于unchecked exceptions (RuntimeException, Error, and their subclasses),由于不需捕获,所以当子类显式throws时可以认为是没有抛出异常,子类、父类的方法可以任意抛出。
其他规则参考“异常的限制,异常说明在类继承是怎样的?”和“Java继承中重写方法的异常抛出”。
java 方法的重写
方法重写的约束条件: 第一:子类方法必须和父类方法在名称,参数签名(参数个数,类型和顺序)和返回类型一致。 第二:子类方法不能缩小父类方法的权限,例如父类中为public方法不能在子类为private方法。 第三:子类方法不能比父类方法抛出更多的异常。 第四:父类的private方法不能被子类重写。
[Java] Overrid 方法重写
} } //方法重写: //
在子类中可以根据需要对父类中继承来的方法进行重新的定义,此方法重写(Override)或覆盖 //方法重写的规则: //
1.重写的方法必须和被重写方法具有相同的的方法名称,参数列表和返回值类型; //
2.重写方法不能使用比被重写方法更严格的访问权限; //
3.重写方法不允许声明抛出比被重写方法范围更大的异常类型.
Overload重载:指同一个类中可以同时存在多个同名的方法,但是方法的参数个数、参数类型及参数顺序不能相同(返回值类型可以改变)。 Override重写:指子类中存在与父类某个方法的方法名、参数个数和参数类型以及返回值类型完全一样的方法,总之和父类中的某个方法签名完全一样。通过子类创建的实例调用这个方法时,将调用子类中的这个方法。就相当于子类中的这个方法把父类中的这个同名方法给覆盖了一样了。 重写是面向对象编程中多态性的实现方式之一。 子类中的这个方法只能抛出比父类中的同名方法少的异常或是
java中的异常处理
类方法异常的子异常。试想,假如子类能抛出大于父类方法异常范围的异常,那么当父类的引用指向子类的对象时,再用父类的引用去调用相关的方法,那么父类将捕捉不到子类的异常,程序看起来正确,但却可能抛出了不受控制的异常,这样的结果不是我们想要的,也违背了面向对象的基本原理。
当一个类在继承某个类的同时还实现了某个接口,而恰好它要重写的方法在父类和接口中都有存在,而且这个方法在父类和接口中抛出了不同的异常,这时,根据上述规则,子类在重写这个方法时,则只能不抛异常或者抛出运行时异常,而不能抛出父类或者接口中的任何一个异常,也不能同时抛出两个异常。
但注意,异常限制对构造器不限制,子类的构造器可以抛出任何异常。
子类重写父类的方法时声明抛出异常不能比父类范围大(转自http://chenpingtai2008.javaeye.com/blog/246435)
ParentException{ public void test() throws Exception{ } } 他的方法可以声明抛出比父类大的异常,假如它是正确的。 那么问题来了。当我们执行ExceptionTest类的时候,我们以这个子类做为对象传进去。 exception.test();这个地方将在运行的时候实际调用的是ChildException这个子类的test()方法,而它的声明抛 出却是比父类大的异常,这就使得在ExceptionTest类中,捕获异常处出现了毛病,因为它无法捕获Exception异常。 综上所诉,子类重写父类的方法时候不能声明抛出比父类大的异常
为什么java中子类重写父类的方法时声明抛出异常不能比父类范围大
test() throws Exception{
} } 他的方法可以声明抛出比父类大的异常,假如它是正确的。 那么问题来了。当我们执行ExceptionTest类的时候,我们以这个子类做为对象传进去。 exception.test();这个地方将在运行的时候实际调用的是ChildException这个子类的test()方法,而它的声明抛 出却是比父类大的异常,这就使得在ExceptionTest类中,捕获异常处出现了毛病,因为它无法捕获Exception异常。 综上所诉,子类重写父类的方法时候不能声明抛出比父类大的异常
overload是重载的意思,override是覆盖的意思,也就是重写。 重载overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。 重写override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。
override(C# 参考)
Java的重写和重载
protected的方法)。
(3)只有实例方法才能被重写,超类中的final方法不能被重写。
(4)重写方法不能抛出新的检查异常,或者是抛出比被重写方法声明的检查异常更广泛的检查异常。
(5)注意一种特殊情况:如果超类的方法版本中声明了检查异常,但重写的子类方法中没有声明,这时如果使用多态的方式进行调用,那么编译器认为你调用的是声明了异常的方法。
(6)尽管多态是在编译时确定对象的类型,但在编译时,还是根据父类的方法声明进行程序检查。因此,如果子类中定义的方法,在父类中没有定义,则会
继承概念与方法的重写小结
子类方法声明抛出异常类项应比父类方法声明抛出类型更小或相等。
一大:子类方法的访问权限应比父类更大或相等。 3.重写方法的属性要求: 覆盖的方法和被覆盖的方法要么都是实例方法或者都是类方法,不能一个是实例方法,一个是类方法,否则会引起编译错误。
4.重写的后果: java的子类不能获得父类的构造器: 既: 子类覆盖父类方法后,子类对象无法访问父类中被
子类的该方法。如果强硬编写调用该方法,会出现undefined。
* 如果调用了父类和子类都有的方法,那么会执行子类的方法,如果子类中没有,那么会执行父类的方法。
* /** 父类有一方法访问修饰符为protected,子类同名方法同参数,访问修饰符可否更改?(重写/覆盖)
* 以,但是访问修饰符的范围一定要比父类的访问修饰符小或者相等。如果方法抛出了异常,要么不抛异常,
* 要么异常也必须是父类所抛出异常或者其子类。重写有三不改,返回类型不能改,参数类型不能改,参数个数不能改
Java方法重写(overriding method)
的访问级别,不能低于父类中该方法的访问级别
3. 子类中方法抛出的异常范围,不能大于父类中方法抛出的异常的范围 注:子类中的方法的访问级别不能低于父类中该方法的访问级别,为何呢?假如没有这个限制, 如果Child类的 outPut() 方法的访问级别为 private ,将会与 java 的多态机制发生冲突。Parent parent = new Child(); parent.outPut(); 这里Java 编译器会认为以上是合法的,但在运行时,根据动态绑定规则,Java虚拟机会调用
转载:链接地址 override(重写)
1、方法名、参数、返回值相同。 2、子类方法不能缩小父类方法的访问权限。 3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 4、存在于父类和子类之间。 5、方法被定义为final不能被重写。 overload(重载) 1、参数类型、个数、顺序至少有一个不相同。
2、不能重载只有返回值不同的方法名。 3、存在于父类和子类、同类中。
override(重写) 1、方法名、参数、返回值相同。 2、子类方法不能缩小父类方法的访问权限。 3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 4、存在于父类和子类之间。 5、方法被定义为final不能被重写。 overload(重载) 1、参数类型、个数、顺序至少有一个不相同。
2、不能重载只有返回值不同的方法名。 3、存在于父类和子类、同类中。
override(重写)
1、方法名、参数、返回值相同。 2、子类方法不能缩小父类方法的访问权限。 3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 4、存在于父类和子类之间。 5、方法被定义为final不能被重写。 overload(重载) 1、参数类型、个数、顺序至少有一个不相同。
2、不能重载只有返回值不同的方法名。 3、存在于父类和子类、同类中。
overload和override的区别 override(重写)
1、方法名、参数、返回值相同。 2、子类方法不能缩小父类方法的访问权限。 3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 4、存在于父类和子类之间。 5、方法被定义为final不能被重写。 overload(重载) 1、参数类型、个数、顺序至少有一个不相同。
2、不能重载只有返回值不同的方法名。 3、存在于父类和子类、同类中。
overload和override的区别 override(重写)
1、方法名、参数、返回值相同。 2、子类方法不能缩小父类方法的访问权限。 3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 4、存在于父类和子类之间。 5、方法被定义为final不能被重写。 overload(重载) 1、参数类型、个数、顺序至少有一个不相同。
2、不能重载只有返回值不同的方法名。 3、存在于父类和子类、同类中。
& 2012 - 2016 & aiuxian.com &All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";继承习题-_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
&&继承习题-
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩3页未读,
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 子类使用父类的变量 的文章

 

随机推荐