问答详情
源自:10-3 Java 中的抽象类

请问一下是不是继承了抽象类,则在main()函数中不能调用子类的成员函数。如图所示。

58073e1e0001b33a05000237.jpg

58073e2300014ae105000238.jpg

58073e260001a0e405000249.jpg

58073e2b000120ec05000237.jpg

如图所示

在main()中。shape1能使用成员函数进行赋值。

而在Circle中,成员函数和成员变量定义在了Circle中。就在main()方法中调用不了。

请问这是为什么?

提问者:慕田峪7021683 2016-10-19 17:37

个回答

  • benyl123
    2016-11-01 09:53:40

    恩没事

  • benyl123
    2016-10-31 22:23:59

    不是,你在main函数里面创建对象时是小转大了,即你在创建Circle对象时是Shape shape2=new Circle();这样的话,用户在调用子类对象方法时只能调用子类继承父类或者子类重写父类的方法,而你写的这个父类刚好是一个抽象类,则子类对象调用方法时只能调用父类的抽象方法,其他方法已经屏蔽了。个人认为与接口没有特别大的关系。

    Shape rt=new Rectangle(3.0f,4.0f);
    		rt.Area(3.0f, 4.0f);
    		rt.Circumference(3.0f, 4.0f);
    		Circle cl=new Circle(5.0f, 3.14f);
    		cl.Area(5.0f, 3.14f);
    		cl.Circumference(5.0f, 3.14f);
    		cl.shuchu();

    这是我写的主函数的一部分,其中shuchu()函数是子类自己独有的。编译没报错。

  • 慕粉4178486
    2016-10-19 18:19:12

    接口对象指向引用对象只可以调用引用对象实现的接口方法,不能调用引用对象自己的方法。

    我是这样理解的。