Я работаю с Java и Android Studio IDE. Я пытаюсь вызвать метод в родительском классе из его подкласса. Я написал небольшую процедуру тестирования, но получаю только нулевой результат.
В моем основном проекте у меня есть родительские и дочерние объекты / классы, и я хотел бы получить значение из родительского объекта / класса, вызываемого из подкласса / объекта. (Объект Дома состоит из Объектов стены, и мой Объект стены пытается получить «Тип стены», указанный в классе Дома. Но ниже приведен небольшой пример того, с чем я работаю.
Я пытался найтиэта проблема, но чтение кода других людей много раз только делает эту проблему более запутанной для меня. Я, должно быть, неправильно понимаю, как это должно работать.
Я пытался переписать, как я получаю данные, либоВызов затем super.getMethod () или Переопределение метода Родителя. Я также играл с моими переменными / методами, являющимися публичными / частными и защищенными, но ничего не достиг.
Мой Родительский Класс:
public class Parent {
protected String myName;
protected Child parentsChild;
public Parent() {}
public Parent (String myName, Child parentsChild) {
this.myName = myName;
this.parentsChild = parentsChild;
}
public String getMyName() {
return this.myName;
}
public void setMyName(String myName) {
this.myName = myName;
}
public Child getParentsChild() {
return this.parentsChild;
}
public void setParentsChild(Child parentsChild) {
this.parentsChild = parentsChild;
}
}
Мой дочерний класс:
public class Child extends Parent {
String childName;
public Child() {
}
public Child(String childName) {
this.childName = childName;
}
public String getChildName() {
return childName;
}
public void setChildName(String childName) {
this.childName = childName;
}
public String getParentName() {
return super.getMyName();
}
@Override
public String getMyName() {
return super.getMyName();
}
}
My MainActivity:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Child child = new Child("Logan");
Parent parent = new Parent("Karrie", child);
System.out.println("Parent: My name is " + parent.getMyName());
System.out.println("Child: My parent's name is " + child.getParentName());
System.out.println("@Override-> Child: My Parent's name is " + child.getMyName());
}
}
Я надеюсь получить имя Родителя в том виде, в котором оно было передано при создании класса Parent с помощью «Karrie». Я получаю только «ноль». Какой бедный ребенок!: - (
Вот мой журнал:
2019-10-17 20:25:36.594 27040-27040/com.example.android.superclassinheritancetesting I/System.out: Parent: My name is Karrie
2019-10-17 20:25:36.594 27040-27040/com.example.android.superclassinheritancetesting I/System.out: Child: My parent's name is null
2019-10-17 20:25:36.594 27040-27040/com.example.android.superclassinheritancetesting I/System.out: @Override-> Child: My Parent's name is null
Спасибо за любую помощь!:]