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

你可能感兴趣的:(java)