A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

interface Shape
{
        double area(double givenValue);
}
class Square implements Shape
{
        public double area(double sideLength)
        {
                    return sideLength*sideLength;
        }
}
class Circle implements Shape
{
        public double area(double r)
        {
                  return Math.PI*r*r;
        }
}
public class Test02  
{
        public static void main(String[] args)
               {
                         //第一种 写法
                         Shape square = new Square();
                         Shape circle = new Circle();
                         System.out.println(square.area(2));
                        System.out.println(circle.area(3));

                       /*第二种写法
                       Square s = new Square();
                       Circle c = new Circle();
                        System.out.println(s.area(2));
                       System.out.println(c.area(3));
                        */
               }
}

用红色字标注的两种方法都可以输出相同的答案,为什么??
这两种方法有什么不同?
菜鸟勿喷....

18 个回复

倒序浏览
第一种方法是多态的形式 ,
多态中的成员访问问题:
                a: 成员变量                                编译看左边 ,运行看左边
                b: 构造方法                                在初始化子类的时候,都需要调用父类无参的构造方法,对父类的数据进行初始化
                c: 成员方法
                        <1>: 静态成员方法        编译看左边 , 运行看左边
                        <2>: 非静态成员方法 编译看左边 , 运行看右边
回复 使用道具 举报 1 0
偶 原来是这样 谢谢啦
回复 使用道具 举报
学到东西了
回复 使用道具 举报
第一种是父类引用指向子类对象
第二种是子类自己创建对象
但对于普通方法来说,以上两种都是指向子类对象,所以没差
回复 使用道具 举报
恩 第一种使用的的是 面向对象中的多态 多态中成员方法是编译看左边,运行看右边. 所以说运行结果和普通的创建对象是一样的
回复 使用道具 举报

我也学到东西了
回复 使用道具 举报
这就是多态,父类引用指向子类对象。成员函数在多态调用时,运行时看右边,编译看左边。
回复 使用道具 举报
不爱念经的小僧 发表于 2015-10-3 15:24
这就是多态,父类引用指向子类对象。成员函数在多态调用时,运行时看右边,编译看左边。 ...

是啊 我还没有预习到多态呢 0.0
回复 使用道具 举报
bucuode00000000000
回复 使用道具 举报

确实很不错
回复 使用道具 举报
学习了~!
回复 使用道具 举报

是啊 我也学习到了
回复 使用道具 举报
父类引用指向子类对象,多态的一种表现形式。
回复 使用道具 举报
拂袖叙五代 发表于 2015-10-5 14:38
父类引用指向子类对象,多态的一种表现形式。

恩 编译看左边运行看右边
回复 使用道具 举报
这就是Java中的多态,可以用父类的引用指向子类的对象,当调用父类的方法时,用的是子类重写后的方法。
回复 使用道具 举报
yuzhouyichen 发表于 2015-10-5 16:05
这就是Java中的多态,可以用父类的引用指向子类的对象,当调用父类的方法时,用的是子类重写后的方法。 ...

恩 是的 大神大神
回复 使用道具 举报
学习        
回复 使用道具 举报

哈哈 共同学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马