2013-12-05 3 views
0

Таким образом, я могу создать простой интерфейс в C#, как так:Создание переменных в интерфейсах (Java)

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» после вычислений. В Java, я нашел много способов создания переменных, большинство из которых выглядят следующим образом:

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

Как создать изменяемую переменную внутри интерфейса Java, которые могут быть переданы (не назначен на месте) к классу, которому при экземпляре объекта как объекта может быть присвоено значение?

ответ

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; 
    } 
} 
1

Это не переменные, а называемые свойствами в C#. И это в основном методы (в терминах Java) - геттер и сеттер (или один из них). Я бы добавил метод getHumanYearAge (возможно, также setHumanYearAge) в вашем интерфейсе. Классы, реализующие интерфейс, должны определить его тело (или их тела). И вы получаете то же, что и в C#. Просто Java более подробный (свойства в C# более кратки).

+0

К сожалению, я имел в виду объекты недвижимости. Благодаря! – prinsJoe

+0

Если OP хочет атрибут, который является общим для всех подклассов, он не должен использовать интерфейс. – broncoAbierto

Смежные вопросы