java沿袭笔记-父类应用指向子类对象

java继承笔记-父类应用指向子类对象

java中父类引用指向子类对象时,子类能调用父类方法,也可以重写父类方法。但是,子类无法调用自己的属性。

例如:

 

class A{
	int i=0;
	void go(){
		
	}
}

class B extends A{
	int i =1;
	void go(){
		System.out.print("重写父类方法");
	}
	public static void main(String args[]){
                A te = new B();
                System.out.print(te.i);
	}
}

 你觉得输出是“0”,还是“1”,结果是“0”,因为子类无法调用子类自己的属性,只能调用父类的属性,而父类的i=0。

 

这个时候就让我怀疑了java中继承的价值,子类竟然不能有自己个性的属性值,那是不是太过蛋疼了。当然是有解决方法的,代码如下:

 

class A{
	int i=0;
	void go(){
		
	}
}

class B extends A{
	public B(){      //在B初始化的时候改变i的值
                i=1;
        }
	void go(){
		System.out.print("重写父类方法");
	}
	public static void main(String args[]){
                A te = new B();
                System.out.print(te.i);     //这时候打印的值就是“1”了
	}
}

 虽然是个很简单的例子,但是让我对java的继承有了更深刻的了解,仅以此记载。