我一直在尝试使用构造函数将classA
中的字符串导入classB
,但我不能在classB
中使用字符串,为什么是这样吗?。代码:
A类:
class classA{
String A="THIS IS THE STRING";
String B="TEXTL: ";
public classA(){
this.A=B+A;
}
}
B类:
class classB extends classA{
public static void main(String[] args){
classA newclassA=new classA();
String Z=A; //WHY A IS NOT RECOGNIZED, WHAT DO I NEED TO DO?
}
}
答案 0 :(得分:1)
这与变量的范围有关。您可以找到更多信息here。
目前,存储在A类中的变量具有包私有范围。有两种方法可以完成你所描述的内容。
更好的解决方案是在classA中提供getter方法:
public String getA(){
return this.A;
}
这将访问classA类实例中的A变量。然后,您可以将main()更改为以下内容:
public static void main(String[] args){
classA newclassA=new classA();
String Z= newclassA.getA(); // Z = "TextL: THIS IS THE STRING";
}
另一种选择是将范围更改为protected以允许子类直接访问变量字段。即。
class classA{
protected String A="THIS IS THE STRING";
private String B="TEXTL: ";
public classA(){
this.A=B+A;
}
}
和
public static void main(String[] args){
classA newclassA=new classA();
String Z= newclassA.A; // Z = "TextL: THIS IS THE STRING";
// this allows you to access fields as if you were in the actual classA class.
}
答案 1 :(得分:-1)
我希望这会有所帮助。
public class stringName {
public String getString(String s){
s =" String in stringName class";
return s;
}
}
public class OutputString {
public static void main(String args[]){
String s = " ";
stringName sN = new stringName();
System.out.println(sN.getString(s) + " The string in the OutputString Class");
}
}