java继承变量中的继承性?
据我所知,继承的类也应该继承变量,那么为什么这段代码不起作用呢java继承变量中的继承性?,java,variables,inheritance,extends,Java,Variables,Inheritance,Extends,据我所知,继承的类也应该继承变量,那么为什么这段代码不起作用呢 public class a { private int num; public static void main(String[] args) { b d = new b(); } } class b extends a { public b() { num = 5; System.out.println(num); } } privat
public class a {
private int num;
public static void main(String[] args) {
b d = new b();
}
}
class b extends a {
public b() {
num = 5;
System.out.println(num);
}
}
private
范围只能由包含的类访问
要使其工作,需要声明num
受保护的范围
但是,这也将使同一包中的其他类可以访问它。我的建议是创建一个get
/set
方法,以保持正确的封装
然后,您可以通过调用getNum()
来访问类b
中的num
,但您无权从子类访问基类的私有成员。只有带有private/protected的修饰符的成员num
变量的访问修饰符是private
,并且private
成员不能从自己的类中访问,所以将其设置为protected
可以从子类中访问
public class a {
protected int num;
...
}
参考
据我所知,继承的类也应该继承变量
您搞错了,实例变量
在子类中未被覆盖。继承性和多态性不适用于实例字段。只有标记为“受保护”或“公共”时,它们才在子类中可见。当前您有标记为private的超类变量。没有其他类可以访问它。将其标记为protected或public,以便其他类访问它。因为您使用的是private访问修饰符。如果对实例变量或方法使用private,则它只能访问类内部的()。我们可以使用getter和setter将私有变量公开给外部。下面的代码将编译而不出错
public class A {
private int num;
public void setNum(int num)
{
this.num = num;
}
public int getNum()
{
return num;
}
public static void main(String[] args)
{
B d = new B();
}
}
class B extends A
{
public B()
{
SetNum(5);
System.out.println(getNum());
}
}
这绝对是你需要的我想你不能继承私人财产variables@PradeepSimha事实上,您不能只继承任何实例变量。只有标记为公共/受保护/否时,它们才可见-modifier@PremGenError是的,我知道。那又怎样?:)
public class A{
public int num=5;
public static void main(String[] args) {
b d = new b();
d.c();
}
}
class b extends A
{
public void c()
{
System.out.println(num);
}
}