java面试之overloading和overriding

1. 重载:

   同一个类中的多个方法名字相同,参数类型或者参数个数不同。调用方法是根据参数的个数和类型决定执行那个方法。

   不同的返回值类型不能判读是否重载。

2. 重写:

   子类和父类之间,如果子类方法的名字,参数类型和个数,返回值相同,则说明该子类重写了父类的方法。

   父类的final方法不能重写

 

3. 重载和重写是java多态的一种表现形式。

 

4. 类实例的引用就是指向一个句柄(handle)的指针,这个句柄是一对指针: 
          一个指针指向一张表格,实际上这个表格也有两个指针(一个指针指向一个包含了对象的方法表,另外一个指向类对象,表明该对象所属的类型); 
          另一个指针指向一块从java堆中为分配出来内存空间。

5. Java中除了static和final方法外,其他所有的方法都是运行时绑定的。private方法都被隐式指定为final的(这样说我也没有依据),因此final的方法不会在运行时绑定。当在派生类中重写基类中static、final、或private方法时,实质上是创建了一个新的方法。

6. 构造方法是被隐式声明为static方法(对不对)。

    父类:

public class Test12 {
	Test12(){
		System.out.println("父类的构造()方法======");
	}
	public void test1() {
		System.out.println("父类的test1()方法======");
	}

	public void test2() {
		System.out.println("父类的test2()方法======");
	}

	public static void test3() {
		System.out.println("父类静态的test3()方法======");
	}
	
	private void test4() {
		System.out.println("父类私有的test4()方法======");
	}
	
	public final void test5() {
		System.out.println("父类fianl方法的test5()方法======");
	}
}

 

   子类:

public class Test13 extends Test12 {

	public void test1() {
		System.out.println("子类的test1()方法======");
	}

	public void test2() {
		System.out.println("子类的test2()方法======");
	}

	public static void test3() {
		System.out.println("子类静态的test3()方法======");
	}
	
	private void test4() {
		System.out.println("子类私有的test4()方法======");
	}
	
	private void test6() {
		System.out.println("子类私有的test6()方法======");
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test12 t12 = new Test13();
		// 根据对象t12对象引用的实际对象类型来调用对应的方法。
		t12.test1(); 
		t12.test2(); 
		// 当子类类中重写基类中static、final、或private方法时,实质上是创建了一个新的方法。
		t12.test3(); 
		//t12.test6(); 虽然子类定义了test6()方法,但是父类并没有定义,一个类型引用只能引用引用类型自身含有的方法和变量。 
		//t12.test4(); 编译会报错的,test4()方法在类Test12中定义私有的,这里是无法调用到的
	
		Test13 t13 = new Test13();
		t13.test1();
		t13.test2();
		t13.test3();
		t13.test4();
		t13.test5();
		
		// Test13 t14 = (Test13) new Test12();  不能把父类对象引用赋给子类对象引用变量
		// java.lang.ClassCastException: Test12 cannot be cast to Test13
		
	}

}

 

执行结构:

父类的构造()方法======
子类的test1()方法======
子类的test1()方法======
子类的test2()方法======
父类静态的test3()方法======
父类的构造()方法======
子类的test1()方法======
子类的test1()方法======
子类的test2()方法======
子类静态的test3()方法======
子类私有的test4()方法======
父类fianl方法的test5()方法======

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值