关于继承、类初始化、多态

首先是类的继承的问题:

子类继承父类,初始化执行顺序为:

1.优先执行父类中的static块,再执行子类中的static块。

2.执行父类中的初始化语句。

3.然后执行父类中的构造函数,父类中的函数。

4.执行子类中的构造函数,子类中的函数。

注明:static块是写入到内存中的,所以是会优先执行的。只要static块中的语句有一个被执行了,那么整个static块都会执行。

附录代码:

class HelloA {
	public HelloA() {
		System.out.println("HelloA");
	}

	{
		System.out.println("I'm A Class");
	}
	static {
		System.out.println("STaticA");
	}
}

public class HElloB extends HelloA
{

	 HElloB() {
			System.out.println("HelloB");
		}

	{
		System.out.println("I'm B class");
	}
	static {
		System.out.println("Static B");
	}

	public static void main(String[] args) {
		new HElloB();
	}

}

运行的结果为:

STaticA
Static B
I'm A Class
HelloA
I'm B class
HelloB



多态:

对象为子类的情况下:子类中如果有这个函数,那么对象会调用子类中的函数,否则就会调用父类中的函数。

对象为父类的情况下:只会调用父类中的函数。

示例代码:

/**
 * 上层的父类
 * @author Feige
 *
 */
class Person7{
	public void fun1() {
		System.out.println("No1,Person7.fun1");
	}
	public void fun2() {
		System.out.println("No2,Person7.fun2");
	}
}

class Student3 extends Person7{
	public void fun1() {
		System.out.println("No3,Student3.fun1 继承person7");
	}
	public void fun3() {
		System.out.println("No4,Student.fun3继承person7");
	}
}
public class DuoTai {

	public static void main(String[] args) {
		Student3 s4=new Student3();
		s4.fun1();
		s4.fun2();
		s4.fun3();
			
		Person7 s7=new Person7();
		//Student3 s7=(Student3)s6; 
		s7.fun1();
		s7.fun2();
			}
}
运行结果:

No3,Student3.fun1 继承person7
No2,Person7.fun2
No4,Student.fun3继承person7
No1,Person7.fun1
No2,Person7.fun2


如有错误,请指正,谢谢~欢迎评论!


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值