JAVA子类继承父类后是不是有父类的属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA子类继承父类后是不是有父类的属性相关的知识,希望对你有一定的参考价值。
A a1=new B();//其中A是父类,B是子类;
//a1是不是既是子类的对象又是父类的对象?
假设B中含有b属性,那么System.out,println(a1.b)为什么不正确呢?
程序:
public class a
String a="A";
public class b extends a
String b="B";
public class c
public static void main(String[] args)
// TODO Auto-generated method stub
a c=new b();
System.out.println(c.b);
a,b的内部编写有关。我建议,在一个类的命名上,还有成员变量的命名上进行规范就可以避免。追问
那麻烦你帮忙给修改一下我看看好么??
追答我把你的代码敲了一下报的错误是:c.b cannot be resolved or is not a field。
改正方式是:对
public class a
String a="A";
public class b extends a
String b="B";
修改,修改为:
public class DomeA
String a="A";
public String getB()
return null;
public class DomeB extends DomeA
String b = "B";
public String getB()
return b;
注:
c.b这个书写语法属于OGNL的书写格式,在Java环境中调用一个成员变量的获取方法geter.在方法中提供get方法就不报错了。简单在父类中添加成员变量b,还是会报出NUllPointException
呃。。。属性可以输出啊 = =
追答c.b是不行的,,没说不能输出
我写一个给你看下
好的
追答public class S
String a="xx";
public void a()
System.out.println(a);
public static void main(String[] args)
S s=new S();
s.a();
看明白了没,你要做什么,可以现在原来的类写好几个方法么到时候在别的地方直接调用就可以了
呃。。。这个方法我懂。。在子类继承父类后,我定义a c=new b();为什么输出c的b属性不对,
我在b类中定义一个void show 方法
public void show()
System.out.println(b);
然后在调用show输出b属性还是不对啊,显示b无法解析;
c是不是不是b的对象啊?
真搞不定了,我也试了下,c.b他就跑到a里面去找了,,b他就没管了,,
java继承
java语言中判断两个类是否具有继承关系,是看这辆个类是否是“is a”关系,而后再提取公共属性和方法写在父类中,子类继承父类后自动拥有父类的属性和方法。java语言中的类只支持单继承,而接口支持多继承,Java中多继承的功能是通过接口来间接实现的。正是因为类的集成是单继承,所以类的丰富度相对较差,而接口是多继承的,正好弥补了类的丰富度差的问题。小结类的优缺点有以下:
优点:1、代码重用性提高了;
2、父类的属性和方法能被子类继承(构造方法不能被继承,但是子类可以通过使用super关键字来调用父类的构造方法);
3、使设计程序变得更加简单;
缺点:类的丰富度较差;
子类可以将从父类继承而来的方法进行重新实现,这叫做方法的重写。方法重写的时候必须做到一下几点:
1、子类重写的方法名必须和父类的方法名一致;
2、子类重写方法的参数列表必须和父类的一致;
3、子类重写方法的返回值类型必须和父类的一致;
4、子类重写方法的访问修饰符必须和父类的一致;
5、子类重写方法不能抛出比父类方法更大范围的异常;
继承采用的是内存叠加机制,即在产生子类的对象的时候要先产生一个父类对象,然后在父类对象上在加载上子类所特有的属性和方法,这样才形成一个完整的子类对象。在本类构造中调用其他的构造方法,this()的方法来调用,使用this.来操作本类的属性和方法。在子类中使用super.来操作定义在父类生身上且被访问修饰符所允许的属性和方法,使用super()来调用父类的构造方法。
以上是关于JAVA子类继承父类后是不是有父类的属性的主要内容,如果未能解决你的问题,请参考以下文章