黑马程序员技术交流社区

标题: public\ priivate\ static\关于方法和继承方面的区别 [打印本页]

作者: 罗玉宁    时间: 2013-3-8 14:32
标题: public\ priivate\ static\关于方法和继承方面的区别
本帖最后由 罗玉宁 于 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\关于方法和继承方面的区别 ,搞清楚过段时间就忘,有没有哪位高手的总结贴出来给小弟看一下。
作者: 梁耀今    时间: 2013-3-8 14:39
本帖最后由 梁耀今 于 2013-3-8 17:11 编辑

A,protected public private 这只是权限描述符,你这样记就好了,最大权限是public 其次是protected 最后是private 。 继承就是子类继承了父类的方法和变量,就像你继承你父亲的家产一样。static 是静态,意思就是在程序开始的时候就装进内存。还有其他什么问题,可以继续回复我!
作者: 张卫刚    时间: 2013-3-8 14:42
答a,和c;
public修饰的类,成员可以被外部所访问,可以被子类继承
priivate修饰的成员被外部类访问,可以通过暴击方法对其进行访问,不能被子类继承
static修饰符修饰的可以不创建对象通过类名直接访问,用于修饰成员(成员变量,成员函数)不能修饰局部,也可以被对象调用,能被子类继承
作者: 谢冬    时间: 2013-3-8 15:06
只有A,子类重写父类方法的要求:子类方法的访问权限大于或等于父类方法的访问权限,方法名相同, 参数列表以及返回值类型必须保证一模一样才能实现重写。访问修饰访问权限的大小是:private(当前类访问权限)<default(同一个包中)<protect(同一个包中和不同包中的子类)<public(全局范围),因此BC错误,D的返回值类型不一样因此也错,E完全是语法上的严重错误
作者: 谢冬    时间: 2013-3-8 15:07
梁耀今 发表于 2013-3-8 14:39
A和B,protected public private 这只是权限描述符,你这样记就好了,最大权限是public 其次是protected 最 ...

B对?private的访问权限难道比protected大?
作者: 梁耀今    时间: 2013-3-8 15:21
谢冬 发表于 2013-3-8 15:07
B对?private的访问权限难道比protected大?

你看清楚先,其次是protected,最后才是private
作者: 梁耀今    时间: 2013-3-8 15:23
谢冬 发表于 2013-3-8 15:07
B对?private的访问权限难道比protected大?

继承注意的是,方法的权限,还有参数的类型!AB都符合
作者: 谢冬    时间: 2013-3-8 15:25
梁耀今 发表于 2013-3-8 15:21
你看清楚先,其次是protected,最后才是private

事实胜于雄辩 你自己测测吧
作者: 梁耀今    时间: 2013-3-8 17:01
谢冬 发表于 2013-3-8 15:25
事实胜于雄辩 你自己测测吧

你看不懂中文?
作者: 夏晓彤    时间: 2013-3-8 19:40
本帖最后由 夏晓彤 于 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; }是重载,参数列表不同吧
作者: 谢冬    时间: 2013-3-8 21:35
梁耀今 发表于 2013-3-8 17:01
你看不懂中文?

:funk:的确是我错了{:3_65:}
作者: 谢冬    时间: 2013-3-8 21:44
夏晓彤 发表于 2013-3-8 19:40
AC正确。测试过了。只有AC对我补充下
在同一个包中 父类中private修饰的是不会被子类继承的,缺省的和prote ...

嗯 的确是这样 我把所有的注意力都放在了重写上 没注意重载
作者: 梁耀今    时间: 2013-3-8 21:50
谢冬 发表于 2013-3-8 21:35
的确是我错了

我汗!!!!
作者: 谢冬    时间: 2013-3-8 22:42
梁耀今 发表于 2013-3-8 21:50
我汗!!!!

我把所有的注意力都放在了重写上 你现在进黑马了没?
作者: 梁耀今    时间: 2013-3-8 22:46
谢冬 发表于 2013-3-8 22:42
我把所有的注意力都放在了重写上 你现在进黑马了没?

我正在努力得到技术分呢!还没有进,我也想去啊,可是测试还没考完
作者: 谢冬    时间: 2013-3-9 01:13
梁耀今 发表于 2013-3-8 22:46
我正在努力得到技术分呢!还没有进,我也想去啊,可是测试还没考完

是不是准备上云计算三期?
作者: 梁耀今    时间: 2013-3-9 09:16
谢冬 发表于 2013-3-9 01:13
是不是准备上云计算三期?

是啊,怎么?你也是啊?
作者: 谢冬    时间: 2013-3-9 10:39
梁耀今 发表于 2013-3-9 09:16
是啊,怎么?你也是啊?

嗯 我加你QQ吧 私聊
作者: 梁耀今    时间: 2013-3-9 10:56
谢冬 发表于 2013-3-9 10:39
嗯 我加你QQ吧 私聊

QQ:470093033




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2