A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 罗玉宁 于 2013-3-9 01:21 编辑

class A {
protected int method1(int a, int b) { return 0; }
}
Public class B extends A{} 问下面哪两个方法在B中是有效的?为什么?
A. public int method1(int a, int b) { return 0; }
B. private int method1(int a, int b) { return 0; }
C. private int method1(int a, long b) { return 0; }
D. public short method1(int a, int b) { return 0; }
E. static protected int method1(int a, int b) { return 0; }
还有总是弄不清public\ priivate\ static\关于方法和继承方面的区别 ,搞清楚过段时间就忘,有没有哪位高手的总结贴出来给小弟看一下。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

18 个回复

倒序浏览
本帖最后由 梁耀今 于 2013-3-8 17:11 编辑

A,protected public private 这只是权限描述符,你这样记就好了,最大权限是public 其次是protected 最后是private 。 继承就是子类继承了父类的方法和变量,就像你继承你父亲的家产一样。static 是静态,意思就是在程序开始的时候就装进内存。还有其他什么问题,可以继续回复我!

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 5分以下,鼓励一下~

查看全部评分

回复 使用道具 举报
答a,和c;
public修饰的类,成员可以被外部所访问,可以被子类继承
priivate修饰的成员被外部类访问,可以通过暴击方法对其进行访问,不能被子类继承
static修饰符修饰的可以不创建对象通过类名直接访问,用于修饰成员(成员变量,成员函数)不能修饰局部,也可以被对象调用,能被子类继承

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
只有A,子类重写父类方法的要求:子类方法的访问权限大于或等于父类方法的访问权限,方法名相同, 参数列表以及返回值类型必须保证一模一样才能实现重写。访问修饰访问权限的大小是:private(当前类访问权限)<default(同一个包中)<protect(同一个包中和不同包中的子类)<public(全局范围),因此BC错误,D的返回值类型不一样因此也错,E完全是语法上的严重错误

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 很热心回答~鼓励一下

查看全部评分

回复 使用道具 举报
梁耀今 发表于 2013-3-8 14:39
A和B,protected public private 这只是权限描述符,你这样记就好了,最大权限是public 其次是protected 最 ...

B对?private的访问权限难道比protected大?
回复 使用道具 举报
谢冬 发表于 2013-3-8 15:07
B对?private的访问权限难道比protected大?

你看清楚先,其次是protected,最后才是private
回复 使用道具 举报
谢冬 发表于 2013-3-8 15:07
B对?private的访问权限难道比protected大?

继承注意的是,方法的权限,还有参数的类型!AB都符合
回复 使用道具 举报
梁耀今 发表于 2013-3-8 15:21
你看清楚先,其次是protected,最后才是private

事实胜于雄辩 你自己测测吧
回复 使用道具 举报
谢冬 发表于 2013-3-8 15:25
事实胜于雄辩 你自己测测吧

你看不懂中文?
回复 使用道具 举报
本帖最后由 夏晓彤 于 2013-3-8 21:32 编辑

AC正确。测试过了。只有AC对我补充下
在同一个包中 父类中private修饰的是不会被子类继承的,缺省的和protected以及public修饰的都可以被子类继承
不在同一个包中时父类中被private,和缺省的修饰的都不会被子类继承,剩下的两个可以被继承。
首先可以确定对的是
A是对的,
楼上哥们说了:子类重写父类方法的要求:子类方法的访问权限大于或等于父类方法的访问权限,方法名相同, 参数列表以及返回值类型必须保证一模一样才能实现重写。访问修饰访问权限的大小是:private(当前类访问权限)<default(同一个包中)<protect(同一个包中和不同包中的子类)<public(全局范围),
在看参数列别,参数列列表和A一样的通通不对,楼上哥们说C错,我认为是对的
C. private int method1(int a, long b) { return 0; } 是B的私有方法,它与A. public int method1(int a, int b) { return 0; }是重载,参数列表不同吧

评分

参与人数 1黑马币 +6 收起 理由
陈丽莉 + 6

查看全部评分

回复 使用道具 举报
梁耀今 发表于 2013-3-8 17:01
你看不懂中文?

:funk:的确是我错了{:3_65:}
回复 使用道具 举报
夏晓彤 发表于 2013-3-8 19:40
AC正确。测试过了。只有AC对我补充下
在同一个包中 父类中private修饰的是不会被子类继承的,缺省的和prote ...

嗯 的确是这样 我把所有的注意力都放在了重写上 没注意重载
回复 使用道具 举报
谢冬 发表于 2013-3-8 21:35
的确是我错了

我汗!!!!
回复 使用道具 举报
梁耀今 发表于 2013-3-8 21:50
我汗!!!!

我把所有的注意力都放在了重写上 你现在进黑马了没?
回复 使用道具 举报
谢冬 发表于 2013-3-8 22:42
我把所有的注意力都放在了重写上 你现在进黑马了没?

我正在努力得到技术分呢!还没有进,我也想去啊,可是测试还没考完
回复 使用道具 举报
梁耀今 发表于 2013-3-8 22:46
我正在努力得到技术分呢!还没有进,我也想去啊,可是测试还没考完

是不是准备上云计算三期?
回复 使用道具 举报
谢冬 发表于 2013-3-9 01:13
是不是准备上云计算三期?

是啊,怎么?你也是啊?
回复 使用道具 举报
梁耀今 发表于 2013-3-9 09:16
是啊,怎么?你也是啊?

嗯 我加你QQ吧 私聊
回复 使用道具 举报
谢冬 发表于 2013-3-9 10:39
嗯 我加你QQ吧 私聊

QQ:470093033
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马