不积跬步,无以至千里;不积小流,无以成江海。

 

Java语言基础

 

子类继承父类时,子类和父类有同名变量和同名方法,对象调用的是哪个的变量或者方法?

结论如下:

 

class Father{
	
	int i = 10;
	
	void set() {
		System.out.println("父类的方法");
	}
	
	void setted() {
		System.out.println("父类的方法");
	}
}

class Son extends Father{
	
	int i = 40;
	
	void set() {
		System.out.println("子类的方法");
	}
	
	void settedd(){
		System.out.println("子类的方法");
	}
}

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Father f = new Father();
		Son s = new Son();
		Father ff = new Son();
		
		System.out.println(f.i);//10
		System.out.println(s.i);//40
		System.out.println(ff.i);//10
		System.out.println();
		//结论:子类,父类含有相同的成员变量,数值看引用型变量所属的类,即左边
		
		f.set();//输出:父类的方法;结论:同名方法,父类对象调用的是父类方法
		s.set();//输出:子类的方法;结论:同名方法,子类对象调用的是子类方法
		
		ff.set();//输出:子类的方法;结论:对于这种'父类 实例 = new 子类()',同名方法调用的是子类方法
		ff.setted();//输出:父类的方法;结论:可以调用父类中独有的方法
//		ff.settedd();//wrong;结论:结论:不可以调用子类中独有的方法
		
//		f.settedd()//wrong;结论:结论:父类对象可以调用子类中独有的方法
		s.setted();//输出:父类的方法;结论:子类对象可以调用父类中独有的方法
		
	}
}

 

  

 

  

posted on 2020-04-05 18:49  smile学子  阅读(488)  评论(0编辑  收藏  举报