编写一个具有两个方法的基类base, 编写一个具有两个方法的基类base, 并在第一个方法内调用第二个方法;然后编写一个派生类derived ,并覆盖父类中的第二个方法;产生一个derived类对象,将它向上类型转化(即转化为base类型),并调用第一个方法。验证并解释运行结果! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 产生一个derived类对象向上类型转化(即转化为base类型),调用第一个方法(父类的),在第一个方法中调用了第二个方法(还是父类的)。产生的derived类对象向上类型转化了,当然调父类的方法了啊! 刚刚做了一个测试public class Test { public static void main(String argc[]){ ((base)(new derived())).t1(); }}class base{ public void t1(){ System.out.println("base t1"); t2(); } public void t2(){ System.out.println("base t2"); }}class derived extends base{ public void t2(){ System.out.println("derived! t2"); }}输出的结果是:E:\java>javac Test.javaE:\java>java Testbase t1derived! t2想不通啊!! public class BaseUse { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Base s = new Derived(); s.t1(); } } class Base{ public void t1(){ System.out.println("base t1"); t2(); } public void t2(){ System.out.println("base t2"); } } class Derived extends Base{ // public void t1(){ // System.out.println("derived! t1"); // t2(); // } public void t2(){ System.out.println("derived! t2"); } } 1.子类转换成父类不用进行强制转换(楼上的^_^),小变大不用强制转换.2.你将子类向上转换成父类,也就相当于父类的引用又指向了子类这个对象,这时实际的对象还是子类!3.你先调用的t1();这个方法只是Derived被继承然后隐藏起来了,实际上调用的就是你那继承过来的t1,当你把我上面这个程序屏蔽的部分运行之后,你就会发现它所调用的t1就是自己的t1()(子类的t1()); 屏蔽时的输出结果:base t1 derived! t2 重写t1()后的输出结果:derived! t1 derived! t2 求助:java如何合并在指定目录下的两个文件,放在一个新的文件中。 多线程的练习 请高人帮忙讲解!谢谢! jsp问题 第一次提问 Java IO 数据流读写的问题 很急很急 在线等 免费Java教学视频录像,特适合初学者 如何开发能显示数学符号的TextArea或EditorPane? 今天面试的时候被问到正则表达式引擎是怎么实现的 java从sybase读中文字符的函数,编译出错 类的加载和对象的创建 java的类加载器路径 为什么没有关于jbuilder的信息呢
public static void main(String argc[]){
((base)(new derived())).t1();
}
}class base{
public void t1(){
System.out.println("base t1");
t2();
}
public void t2(){
System.out.println("base t2");
}
}class derived extends base{
public void t2(){
System.out.println("derived! t2");
}
}输出的结果是:
E:\java>javac Test.javaE:\java>java Test
base t1
derived! t2想不通啊!!
public class BaseUse {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Base s = new Derived();
s.t1();
}
} class Base{
public void t1(){
System.out.println("base t1");
t2();
}
public void t2(){
System.out.println("base t2");
}
} class Derived extends Base{
// public void t1(){
// System.out.println("derived! t1");
// t2();
// }
public void t2(){
System.out.println("derived! t2");
}
}
1.子类转换成父类不用进行强制转换(楼上的^_^),小变大不用强制转换.
2.你将子类向上转换成父类,也就相当于父类的引用又指向了子类这个对象,这时实际的对象还是子类!
3.你先调用的t1();这个方法只是Derived被继承然后隐藏起来了,实际上调用的就是你那继承过来的t1,当你把我上面这个程序屏蔽的部分运行之后,你就会发现它所调用的t1就是自己的t1()(子类的t1());
base t1
derived! t2
重写t1()后的输出结果:
derived! t1
derived! t2