Java如何使用子类的某个函数()中的变量?
问题描述:
我写了一段代码如下:Java如何使用子类的某个函数()中的变量?
class MyParent {
String a = "abcdefg";
String b;
public void print() {
b = "ABCDEFG";
System.out.println(a);
}
}
class MyChild extends MyParent {
String c = super.b;
public void print2() {
System.out.println(c);
}
}
public class Parent {
public static void main(String args[]) {
MyParent mp = new MyParent();
mp.print();
MyChild mc = new MyChild();
mc.print2();
}
}
有两类,他们是父母&孩子。 在class MyParent
中声明了b
,并在函数print()
中给出了一个值。
我想在子类MyChild
中打印b
。但是如果我运行代码,它可以正确打印,但b
显示null
。
我是Java新手。请帮助我。
UPDATE
谢谢大家回答我的问题。我找到了解决方案。
我用最简单的方法。我将它改为**static String b**
。
静态使我的论点可以四处使用。
但我不知道使用数据声明的确切方式。所以我会继续学习。
答
mp和mc对象的实例是不同的。因此,b的值在对象mp中设置为“ABCDEFG”,但mc.b仍然为空。
尝试调用mc.print()
然后mc.print2()
但是如果你想要对象的不同实例,以B股对更新的相同的值,那么你可以让b
静态。
答
你必须调用
print()
MyParent的方法来初始化“B”。你没有初始化它。
答
它打印null
,因为在MyParent
类中声明它为空String
。您在print()
方法中初始化了b
。所以,如果你想利用b
值,你可以这样做:
MyChild mc = new MyChild();
mc.print();
答
当你让扩展类埃夫里的方法和属性,谁得到保护,少去孩子现在如果父母有串B中的孩子也得到了字符串b 如果你想要字符串b的孩子将是相同的价值的字符串b在父母u做一个构造函数,并在构造函数this.b = super.b及其意义当你创建的对象子类它初始化属性。 现在在这个代码中,你不应该像面向对象那样初始化属性。
class MyParent {
String a = "abcdefg";
String b="ABCDEFG";
public MyParent(){}
public void print() {
System.out.println(a);
}
}
class MyChild extends MyParent {
public MyChild(){
this.b =super.b;
}
public void print2() {
System.out.println(b);
}
}
public class Parent {
public static void main(String args[]) {
MyParent mp = new MyParent();
mp.print();
MyChild mc = new MyChild();
mc.print2();
}
}
https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html,http://www.javaworld.com/article/2987426/core-java/java-101-继承功能于Java的部分1。html –
您已经创建了两个完全独立的对象 - “mp.b”将是“ABCDFEF”,但“mc.b”是“null”,因为您从未将其设置为其他任何对象。 –