基类:package com.cn;import com.dai.C;public class A {
public void b() {
System.out.println("A.b");
}
protected void c() {
System.out.println("A.c");
}
private void d() {
System.out.println("A.d");
}
public static void main(String[] args) {
A c = new C();
c.d();//打印出A.d了呵呵??
}
}
/*
* private类型的能继承吗?呵呵
*
* */
派生类:package com.cn;import java.lang.reflect.Method;public class C extends A{
public static void main(String[] args) {
A c = new C();
Class<? extends A> type = c.getClass();
Method[] methods = type.getMethods();
for(Method me:methods) {
System.out.println(me.getName());
}
}
}
/*
最后的输出为:
main
b
wait
wait
wait
equals
toString
hashCode
getClass
notify
notifyAll
为什么没有c呢?
*/不是继承了c()这个方法了吗?为什么没有打印出C。java继承到底是什么样的机制啊。
多态的时候有事咋回事呢?
谁能说说继承多态的内存模型呢?
public void b() {
System.out.println("A.b");
}
protected void c() {
System.out.println("A.c");
}
private void d() {
System.out.println("A.d");
}
public static void main(String[] args) {
A c = new C();
c.d();//打印出A.d了呵呵??
}
}
/*
* private类型的能继承吗?呵呵
*
* */
派生类:package com.cn;import java.lang.reflect.Method;public class C extends A{
public static void main(String[] args) {
A c = new C();
Class<? extends A> type = c.getClass();
Method[] methods = type.getMethods();
for(Method me:methods) {
System.out.println(me.getName());
}
}
}
/*
最后的输出为:
main
b
wait
wait
wait
equals
toString
hashCode
getClass
notify
notifyAll
为什么没有c呢?
*/不是继承了c()这个方法了吗?为什么没有打印出C。java继承到底是什么样的机制啊。
多态的时候有事咋回事呢?
谁能说说继承多态的内存模型呢?
解决方案 »
- private,static,final,abstratr的困惑
- final用在方法名前有什么意义?
- 发布Mysql数据库应用程序
- 如何将一个application转化为applet
- 100分求乱码的问题,很急,请大家帮忙
- 初学java,请教JComboBox选项判断的问题
- 新手求教一个关于socket的问题,早上还行的代码下班回来一调又不行了,要吐血了都
- wjmmml(笑着悲伤) aiur(AIUR) 在请问上下左右键的ASCII值
- 如何把信息保存到Session里面?
- 刚学线程遇到了两个问题,一直想不通
- 怎样用java查看远程服务器开放的端口?
- 如何在同一个servlet中根据不同的method,进行不同的处理
返回一个包含某些 Method 对象的数组,这些对象反映此 Class 对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法。API上就写了,这个方法返回的就是 公共 的方法
你能在外部调用的,只有公用方法,
把 protected 的方法通过反射返回给你也没有意义
protected 的方法可以继承,就是在其子类的内部可以调用
private 类型不能继承
是根本没继承、
还是继承了一块儿内存但是不可用
我给忘了记得java编程思想上有吧
c.d();你把这段移到别的类里面试试……,
你这个调用d()的方法,还是在A类的内部,在内部用A类型的引用调用A类的私有方法当然可以或者你改成
C c = new C();
c.d();
试试……
是可以访问的,只是个getMethods()只返回public方法的,所以,,,
其实是调用了A类中的方法罢了。
1、这样理解有一些小问题:
你确实生成了一个A的对象,
但是这个A的对象是在A类的内部生成的
所以可以通过A的引用调用其私有方法2、如果说执行效果的话,
你不new C();
直接调用的d();
(当然,要在非静态方法中直接调用d();)
和你这样写的执行效果是一样的。