理解Java中的属性和方法

时间:2016-05-25 16:25:41

标签: java

我有一个基本的想法,我们有一个具有属性和方法的类;但是,我对它的具体工作方式感到困惑。例如。 c2.chat(c3);我有一匹牛等于小牛,并在小牛身上调用chat()函数。为什么我们使用Calf类中的chat()函数与Cow类中的chat()函数?这次通话中的c2字段是做什么的?

   class Cow{
        String say = "C";
        String speak(){
            return say;
        }
        void chat(Cow c1){
            System.out.println("A " + this.speak() + " B " + c1.speak());
        }
    }
    class Calf extends Cow{
        Calf(){ say = "H";}
        void chat(Cow c1){
            System.out.println("F " + this.speak() + " G " + c1.speak());
        }
    }
    class Main{
        public static void main(String[] args){
            Cow c1 = new Cow();
            Calf c3 = new Calf();
            Cow c2 = c3;
            c1.chat(c2);
            c2.chat(c3);
            c3.chat(c2);
            c1.chat(c3);
            c3.chat(c1);
        }
    }

输出:

A C B H
F H G H
F H G H
A C B H
F H G C

1 个答案:

答案 0 :(得分:0)

由于您正在使用现有方法进行牛类,而小牛来自牛,因此聊天方法与牛相比,基于小牛的属性而有所不同。因此,speak方法可以在两个类中使用。虽然他们都是基于他们可以说话的事实,但只是以不同的方式。另一个值得注意的区别是“说”变量的定义不同于小牛与牛。

c2字段将Calf类实例化为一个新对象,即牛。如果我理解正确,这将是多态性的利用。