Java 如何获得期望的继承结果?

Java 如何获得期望的继承结果?,java,inheritance,Java,Inheritance,这是超类 public class MonsterMash { public static void main(String[] args) { Monster moron = new Senator("jim","Georgia"); System.out.println(moron.getName()); System.out.println(moron.getState()); } } 执行程序后,代码不会产生所需的结果。 我想我在主课上做错了什么 我

这是超类

public class MonsterMash
{
  public static void main(String[] args)
  {
    Monster moron = new Senator("jim","Georgia");
    System.out.println(moron.getName());
    System.out.println(moron.getState());
  }
}
执行程序后,代码不会产生所需的结果。 我想我在主课上做错了什么

我想要的结果是吉姆·乔治亚。
如何打印它?

您的构造函数中没有使用s的值

public class Monster
{
   String name;
   public Monster()
   {
     name="Dracula";
   }
  public Monster(String n)
  {
    name=n;
  }
  public String getName()
  {
    return name;
  }
}



public class Politician extends Monster
{
  public Politician(String n)
 {
    super(n);
 }
}

public class Senator extends Politician
{
  String state;

  public Senator(String n)
  {
    super(n);
    state="New Jersey";
  }
  public Senator(String n,String s)
  {
   super(n);
   state=s;
  }
  public String getState()
  {
    return state;
  }
}
你需要一个白痴来当参议员,而不是一个怪物。大体上:

    public Senator(String n,String s)
  {
    super(n);
    state= s;  // This was set to a default value of "New Jersey" before
  }

你没有在你的构造函数中使用s的值

public class Monster
{
   String name;
   public Monster()
   {
     name="Dracula";
   }
  public Monster(String n)
  {
    name=n;
  }
  public String getName()
  {
    return name;
  }
}



public class Politician extends Monster
{
  public Politician(String n)
 {
    super(n);
 }
}

public class Senator extends Politician
{
  String state;

  public Senator(String n)
  {
    super(n);
    state="New Jersey";
  }
  public Senator(String n,String s)
  {
   super(n);
   state=s;
  }
  public String getState()
  {
    return state;
  }
}
你需要一个白痴来当参议员,而不是一个怪物。大体上:

    public Senator(String n,String s)
  {
    super(n);
    state= s;  // This was set to a default value of "New Jersey" before
  }

您的类
Senator
的构造函数正在将状态值设置为“newjersey”,您所需的状态值从未设置为从
main()

传递的动态值。您的类
Senator
的构造函数正在将状态值设置为“newjersey”,您所需的状态值从未设置为从
main()

传递的动态值,您必须将Senator分配给Senator类型引用,因为您希望调用仅属于Senator的方法

 Senator moron = new Senator("jim","Georgia");

必须将Senator分配给Senator类型引用,因为您要调用只属于Senator的方法

 Senator moron = new Senator("jim","Georgia");
类内怪物混搭:

    Senator moron = new Senator("jim","Georgia");
    System.out.println(moron.getName());// Monster/Polititian/Senator
    System.out.println(moron.getState());// Senator only
如果不想在此处更改并保持动态绑定,则必须将Monster和Political类都设置为抽象类,并在这两个类中创建抽象方法getState():

Senator moron = new Senator("jim","Georgia");
类内怪物混搭:

    Senator moron = new Senator("jim","Georgia");
    System.out.println(moron.getName());// Monster/Polititian/Senator
    System.out.println(moron.getState());// Senator only
如果不想在此处更改并保持动态绑定,则必须将Monster和Political类都设置为抽象类,并在这两个类中创建抽象方法getState():

Senator moron = new Senator("jim","Georgia");

在目前的情况下,这是不可能的,因为每个人都将生活在
newyersey
公共参议员(字符串n,字符串)和
公共参议员(字符串n,字符串s)之间有什么区别
?在目前的状态下,这是不可能的,因为每个人都将生活在
新耶西
公共参议员(字符串n,字符串)和
公共参议员(字符串n,字符串s)
之间有什么区别?