【发布时间】:2018-08-02 17:01:06
【问题描述】:
当我运行我的程序时,我得到了这个:
错误:名称在 Animal 中具有私有访问权限
以下是我的课程:
动物类
public class Animal
{
private String name;
public Animal(String name)
{
this.name = name ;
System.out.println("The Animal " + name + " has been created.") ;
}
public String getAnimalName()
{
return name ;
}
public String setAnimalName(String newName)
{
return name = newName ;
}
public void sleep()
{
System.out.println("The Animal" + name + " is asleep.");
}
public void noise()
{
System.out.println("The Animal " + name + " is making a noise.");
}
public String toString()
{
return "The Animal " + name ;
}
public boolean equals(Animal otherAnimal)
{
return (name.equals(otherAnimal.name)) ;
}
}
鸟类
public class Bird extends Animal
{
public Bird (String name)
{
super(name);
System.out.println("A Bird " + name + " has been created.");
}
public void makesNoise()
{
System.out.println("The Bird " + name + " is chirping.");
}
public String toString()
{
System.out.println("The Bird " + name);
}
public boolean equals(Bird otherBird)
{
return (name.equals(otherBird.name));
}
}
狗类
public class Dog extends Animal
{
private String breed ;
public Dog (String name, String breed)
{
super(name);
this.breed = breed ;
System.out.println("A Dog " + name + "of breed " + breed
+ " has been created.") ;
}
public String getDogBreed()
{
return breed ;
}
public String setDogBreed(String newBreed)
{
return breed = newBreed ;
}
public void makeNoise()
{
System.out.println("The " + name + " is barking.");
}
public String toString()
{
System.out.println("The Dog " + name + " of breed " + breed);
}
public boolean equals(Dog otherDog)
{
return (name.equals(otherDog.name) &&
breed.equals(otherDog.breed));
}
}
主类
public class AnimalMain
{
public static void main(String[] args)
{
Animal animal = new Animal("Oscar");
Bird bird = new Bird("Tweety");
Dog dog = new Dog("Inka", "Mutt");
animal.toString();
bird.toString();
dog.toString();
}
}
第一个类可以编译,但其他三个没有,因为它无法从父类访问私有 String。现在我知道这是会发生的,但是有没有办法让它在父类有一个名为 name 的私有 String 并且只有一个构造函数的情况下工作?
【问题讨论】:
-
使用吸气剂!
-
你觉得为什么叫
private? -
子类不继承其父类的私有成员 - docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
-
也许您应该回答这个问题 - 为什么您想要访问该字段而不是使用现有的 getter 方法?
-
这就是我遇到的问题,我在哪里实现 getter?
标签: java inheritance private