本文目录一览:
JAVA中的继承问题
B继承了A类,并且又定义了一个变量i,这个变量i隐藏了父类A类的变量i,此时B类的每一个对象b中都有两个属性i:A.i=123以及B.i=456。对于一个B类引用b,使用b.i访问时,访问的是B.i属性,也就是456。
而方法g(A a)的形参是A类引用,将一个B类对象传递到方法g中,在方法g中只能访问这个B类对象的A类部分,因此此时a.i代表的是这个B类对象中的A.i属性,也就是123。
关于JAVA,继承问题。
和C++类似,可以继承基类的公共属性和方法。
在Java继承里,父类的属性还有方法在声明时,如果是public关键字即公共属性,则在子类继承时,这些属性和方法都会被子类继承。受保护的也可以继承
但是私有的类属性成员和方法则无法继承。
.子类继承父类的成员变量
当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:
1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;
2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。
2.子类继承父类的方法
同样地,子类也并不是完全继承父类的所有方法。
1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;
2)对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。
java继承问题
方法可以覆盖。。。。。但是变量是不能覆盖的。。。。
所以test里面有两个value, 一个是从父类parent继承来的value(值为124),可以用super.value来获取,另一个是自己的value(值是456)
所以这个方法是父类的方法,返回的也是父类value的值。
如果在子类test里面覆盖这个方法。。。结果就是456了。。
代码如下:
class parent
{
protected String value = "123";
public String getValue()
{
return value;
}
}
public class test extends parent
{
protected String value = "456";
public String getValue(){
return value;
}
public static void main(String[] args)
{
System.out.print((new test()).getValue());
}
}
java中继承问题,求高手解释一下!
有点复杂,就解释一条,其它的你自己思考吧。
System.out.println(a2.show(b)); 结果是“B And A”,为什么不是 “B And B”或“A And A”呢?
已知a2的类型是A,实际对象是B。
那么 a2.show(b) 以根据class A的定义来选择方法,自然是进入show(A)方法。 正好 B 又覆盖了 show(A)方法,所以最终执行的是 B.show(A) 方法。
java继承中出错
你先把12.19那个项目关闭再试一下
项目上右键选择 close project
java中子类继承父类时总是出错怎么回事
如果是多个类放在一个public里就会出错
java-继承-实例
1234567891011121314151617181920212223242526272829303132333435
//建一个A类class A{//成员变量 其中num是实参int num=0;//成员方法,其中 i 是型参public A(int i){//输入int型文件输出下面System.out.println("aaaaaaaaaaaaaaaaaaa");System.out.println("i= "+i);//把输入的i赋值给成员变量numnum=i;}}//B继承Aclass B extends A{int num=0;//成员方法B.public B(){//继承类A的方法.因为B继承了A必然继承了A的特性.所以输入int值10令方法实现.super(10);System.out.println("bbbbbbbbbbbbbbbbbbbb");//这里的num是类B的.System.out.println("num= "+num);//如果想显示类A的num则需要用下列的super.num.这里注意num在类A中需是成员变量才可以.System.out.println("super.num= "+super.num);}}//建立测试类Cpublic class C{//mainpublic static void main(String aa[]){//new 一个对象B()new B();}}