关于think in java 中的多态性的问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 08:35:44
Shape c = new Circle()和Circle c = new Circle()有何区别??

我做了如下测试:
package net.qday.test;
public class Shape {

public Shape(){
System.out.println("create a new shape");
}
public void draw(){
System.out.println("shape drawing");
}
}
package net.qday.test;
public class Circle extends Shape{
public Circle(){
System.out.println("create a new circle");
}
public void draw(){
System.out.println("circle drawing");
}
public static void main(String[] args){
Circle c = new Circle();
c.draw();
System.out.println("------------------");
Shape s = new Circle();
s.draw();
}
}
运行结果如下(没看出来什么区别):
create a new shape
create a new circle
circle drawing
------------------
create a new shape
create a new circle
circle drawing
我在Circle里面增加了另一个方法draw2(),确

Shape c = new Circle()和Circle c = new Circle()有何区别??

怎么说 Shape c = new Circle()来说吧

Shape c 创建一个Shape 的对象 c 但是他的实例也是是Shape 类的.因为Circle是继承自Shape 的. 但是c只能调用到所有Shape 中的方法.而Circle中间的方法是没有办法调用到的..要是如果Circle重写了Shape 中间的方法的话调用执行的还是子类的方法.

Shape c = new Circle();
在理解一下...Shape 不光可以是一个类.也可以是一个虚类.或者说说一个接口.而Circle是必须继承或者实现了Shape 的一个类.

补充一下..个人认为多态不一定是必须只有继承才可以实现的

public void draw(){
System.out.println("circle drawing");
}

public void draw( int a){
System.out.println("circle drawing"+a);
}
我想这也是多态的一种表现吧..通过方法的重写..
至于为什么...我想想要..我也经常这么用但还没有总结过..
一般我是用接口去进行这种操作.因为接口没有办法实例化..
所以要实例化一个他的实现..

xxpniu 说的到有那么点点感觉..例子很不错..
我复述一下..学校是一个类.一个老师就是一个接口.N个老师就是N个接口.这个学校实现n个老师和其他的接口.但是你得到学校就能得到老师这是肯定的.老师 c = new 学校();就好比用学校直接得到了老师..
省心啊..不用在学校里面去辛辛苦苦的去找一个老师出来了..直接就能得到了老师...差不多这意思吧..

Circle 类里的
Shape s = new Circle();
应该写成
Shape s = new Sha