java--方法和成员的继承,访问

//在调用方法的时候,不是看句柄是哪一个类,而应该看对象是属于哪一个类的,属于哪一个类的,就调用哪一个类的成员和方法。

//子类可以添加自己的新方法,但是子类对象的引用赋值给父类句柄之后,不能使用父类的句柄访问子类的新方法。

//父类的方法重载之后,将子类对象赋值给父类句柄,就不能使用父类句柄调用的该方法为子类覆盖的方法,而不是父类方法。方法覆盖机制。

//但是,对父类中的变量,如果在子类中重新定义了,在使用该变量的时候,子类的对象使用它,就调用子类的该变量;父类的对象使用它,就调用父类的该变量。

class S508{
	int i = 1;
	int fun(int i,int j){
		System.out.println("S508() i+j = "+ (i+j));
		return i+j;
	}
}
 class A508 extends S508{
//	 int i = 9;
	 int j = 10;
	int fun(int i,int k){
		System.out.println("A508() i*k = "+i*k);
		return i*k;
	}
	double fun(double i,int j){
		System.out.println("A508() i+j = "+(i+j));
		return i+j;
	}
	
}
public class F508{
	public static void main(String[] args) {
		S508 s= new S508();
		
		s.fun(2,5);
		System.out.println(s.i);
		A508 a = new A508();
		
		a.fun(2,5);
		System.out.println(a.i);
		
//		a = s;
		a.fun(2.2,5);
		System.out.println(a.i);
		
		s = a;//子类对象赋值给父类句柄
//		System.out.println(s.i);
		s.fun(2, 5);
		System.out.println(s.i);
//		System.out.println(s.j);
		
	}
}

 输出结果:(IDE eclipse)

S508() i+j = 7
1
A508() i*k = 10
1
A508() i+j = 7.2
1
A508() i*k = 10
1

原文地址:https://www.cnblogs.com/plxx/p/3331057.html