在接口中创建变量(Java)

时间:2013-12-05 22:57:35

标签: java variables interface

所以,我可以在C#中创建一个简单的界面,如下所示:

 public interface IAnimal {
      int HumanYearAge { get; set; }
      int AnimalYearAge { get; }
 }

然后我可以创建一个这样的接口类:

 public class Dog: IAnimal {
      public int HumanYearAge;
      public int AnimalYearAge
      {
        get { return Age * 20; }
      }
 }

然后在程序中,我可以在计算后实例化具有某个“HumanYearAge”和某个“AnimalYearAge”的Dog。在Java中,我发现了很多创建变量的方法,其中大部分都是这样的:

 public interface myInterface {
      AtomicReference<String> Name = new AtomicReference<String>("John Doe");
      //Or they look something like this:
      public final int Name = 0;
 }

如何在Java接口内部创建一个可修改的变量,该变量可以被PASSED DOWN(当场没有分配)到一个类,当它被实例化为一个对象时,可以赋值?

2 个答案:

答案 0 :(得分:1)

这些不是变量,而是在C#中称为属性。 它们基本上是方法(用Java术语) - 一个getter和一个setter(或者其中之一)。 我会在你的界面中添加getHumanYearAge(也许还有setHumanYearAge)方法。 实现接口的类将需要定义其主体(或它们的主体)。 你得到的东西和C#一样。这只是Java更冗长 (C#中的属性更简洁)。

答案 1 :(得分:0)

Java中的接口没有属性。你需要使用一个抽象类。

你可以有这样一个。

public abstract class Animal{

    private int animalYearAge;

    public Animal(int animalYearAge){
        this.animalYearAge = animalYearAge;
    }

    public void setAnimalYearAge(int age){
        this.animalYearAge = age;
    }

    public int getAnimalYearAge(){
        return animalYearAge;
    }

    public abstract int getHumanYearAge();        

}

然后,您可以定义这样的具体动物,例如。

public class Dog extends Animal{

    public int getHumanYearAge(){
        return this.getAnimalYearAge() * 7;
    }
}