既然方法、对象什么的都要在新类中重新定义,那写Abstract类还有什么必要呢?谢谢高手指点!
解决方案 »
- 以字节流读入文件(内容包括中文)时显示乱码
- 谁能给个并归排序函数的java代码?
- 命令行下编译java问题
- java问题,比较难,希望大家能帮我解决。我查了一个多星期的资料都没查到。
- 在jbuilder中将一个类文件换名之后,就不能成功编辑了,为什么,有解决方法吗??100分
- 菜鸟级问题:怎样把一个字符串变量转换为一个整形变量,如果不能转换需要抛出异常?
- 向大家请教了!
- 各位,请问一下,我在第一运行JBuilder的时候,它向我要Login name和password应该怎么输入呀?
- 怎么样嵌套Dialog呀?
- 为什么JSplitPane初始时写了调整其大小没有任何反映
- 有关windows环境下安全的问题!
- 有关PriorityQueue的问题
abstract class A{}
class C extends A{}
class D extends A{}public class Test{
public static void main(String args[]){
A a=new C();
a=new D();}
}
是不是很有意思啊
里面第五章继承
相信你就可以理解了
abstract class A{}
class C extends A{public void getC(){}}
class D extends A{}public class Test{
public static void main(String args[]){
A a=new C(); // 这个是使用C类中的方法吧?
a=new D(); // 这个是使用D类中的方法吧?
a.getC(); // 此时a已经被改写,还可以继续使用C中的方法吗?
}
}
// 这个是使用C类中的方法吧? ---这只是个向上转型,只是实例化,没调用这个类的什么方法,除了构造方法!
// 这个是使用D类中的方法吧? /
// 此时a已经被改写,还可以继续使用C中的方法//这里明显编译出错!因为A类没有这个方法,虽然调用的时候是C的方法,但是编译的时候A类没有此方法就出错!
不过如果我这样改,调用的方法是谁的呢?
abstract class A
{
public void get(){}
}
class C extends A
{
public void get(){System.out.println("I'm C.");}
}
class D extends A
{
public void getC(){System.out.println("I'm D.");}
} public class Test{
public static void main(String args[]){
A a=new C();
a=new D();
a.get(); // 此时调用的方法是谁的呢?
}
}
如果getC改成 get()
调用的 public void getC(){System.out.println("I'm D.");} 这个方法。
另外一些抽象方法可以延迟到子类里实现,实现了针对借口的编程
Java的继承与多态
这部分内容两三句话是说不明白的