【问题标题】:Writing and accessin child class variable and function except those being inherited from parent class编写和访问子类变量和函数,除了那些从父类继承的变量和函数
【发布时间】:2015-09-25 22:57:19
【问题描述】:

我试图在具体类中实现和访问一个新的数据成员和一个新的成员函数,而不是从父类继承的那个。但不能那样做。

真正的问题如下:

创建一个具有 2 个数据成员和 2 个成员函数的抽象类 A。 创建A类的两个具体类,命名为BC。每个具体类应该有 2 个新的数据成员和 2 个新的成员函数。 2 个类中的数据成员和成员函数不应相同。编写 main() 方法来创建每个子类的对象,并向它们发送足够的消息以显示这些方法的工作原理。

请帮忙。

代码是--

import java.util.*;

abstract class A
{
    abstract void display();
    abstract void rules();
    int players;
    int length;
}
class B extends A
{
    B(int a,int b)
{
    players=a;
    length=b;
}
    void rules()
    {
    System.out.println("B rules");
    }
    void display()
    {
    System.out.println("In B players=" +players);
     }
 }

class C extends A
{
    C(int a,int b)
    {
    players = a;
    length = b;
    }

    void summary()//  PROBLEM IS HERE . CAN NOT ACCESS summary
    {
        System.out.println("rules");
    }
    void display()

    {
        System.out.println("In C players=" +players + " length=" +length);
    }
}

public class BatandBall
{
    public static void main(String args[])
    {
        System.out.println("Airtel Champions League");

        A obj = new B(10,3);
        obj.display();

        A obj1 = new C(11,8);
        obj1.display();
        obj1.summary(); //   PROBLEM IS HERE . CAN NOT ACCESS summary
    }
}

【问题讨论】:

  • 请向我们展示您的代码并告诉我们您对的含义“但不能这样做。”
  • @Nazgul 这很简单..你应该先试试。

标签: java inheritance


【解决方案1】:

您无法访问它,因为您创建的变量的类型是 A,而不是 C。我知道实际上obj1C,但多态性使它不是C。如您所见,您在这里声明了A

A obj1;

无论您在obj1 中输入什么值,它仍然是A 类型。那你怎么称呼summary?你需要一个演员表!这会将obj1 的类型更改为C

(C)obj1

然后你就可以用它来调用summary

((C)obj1).summary();

这很容易不是吗?


顺便说一句,您的C 类没有实现A 中定义的rules。您可能应该实现它,否则您的代码将无法编译。

【讨论】:

    猜你喜欢
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多