У меня есть 2 класса, один из которых расширяет суперкласс. когда я вызываю подкласс из основного, я получаю сообщение об ошибке, потому что «метод, который я вызываю, не является частью класса», но поскольку моя программа продолжается, он должен работать, я должен был использовать его только с приведениемкласса, но мой учитель сказал мне, что кастинг не должен использоваться в такой работе, поэтому, пожалуйста, я хотел бы понять, где я ошибаюсь, и где я могу лучше
(я предоставляю код3 класса, подкласс, суперкласс и основной)
Основной
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Type in the number");
int number = in.nextInt();
System.out.print("Type in the name");
String name = in.next();
Test testObj = new Test(number);
testObj = new TestSub(number);
testObj.setNameSub(name);
in.close();
}
}
Суперкласс
public class Test {
protected int number;
protected String name;
public Test(int number){
this.number=number;
}
public void setName(String name){
this.name=name;
}
public String toString(){
return "the name is "+name+"the number is "+number;
}
}
Подкласс
public class TestSub extends Test {
public TestSub(int number){
super(number);
}
public void setNameSub(String name){
setName(name);
}
public String toStringSub(){
return toString();
}
}
Я получаю следующую ошибку:
Метод setNameSub (String) не определен для типа Test
В главном, где есть эта инструкция: testObj.setNameSub(name);