Java中super、final关键字




final class Test{	//使用final定义的类不能被继承	
	public final static int NUM = 10;//使用final定义的属性不能被改变。
	public final static void fun(){	//使用final定义的方法不能被覆写。
		System.out.println("测试");
	}
}
class Fu{
	int num=10;
	Fu(){
		super();
		show();
		return;
	}
	void show(){
		System.out.println("Fu	"+num);
	}
}

class Zi extends Fu{
	int num=1;
	Zi(){
		super();
		System.out.println("Zi show");
		return;
	}
	
	void show(){
		System.out.println("Zi	"+num);
	}
	
}
public class TextDemo1{
	public static void main(String[] args){
			Zi z = new Zi();
			/*
				结果:
					Zi 	0
					Zi show
			*/
	}
}
/**
	通过super初始化子类内容的时候,子类成员变量并未显示初始化。
	等super()父类初始化完成后才进行子类的成员变量显示初始化。
	
	一个对象实例化过程:
		Demo m = new Demo();
	1,JVM会读取指定的路径下的Demo.class文件,并加载进内存,
		并会加载Demo的父类(如果没有直接父类的情况下)。
	2,在堆内存中开辟空间,分配地址。
	3,并在对象空间中,对对象中的属性进行默认初始化。
	4,调用对应构造函数进行初始化。
	5,在构造函数中,第一行会先调用父类中的构造函数进行初始化。
	6,父类初始化完成后,在对子类的属性进行显示初始化。
	7,在进行子类构造函数的特定初始化。
	8,初始化完成后,将地址值赋值给引用变量。

	通过super初始化子类内容的时候,子类成员变量并未显示初始化。
	等super()父类初始化完成后才进行子类的成员变量显示初始化。
	
	一个对象实例化过程:
		Demo m = new Demo();
	1,JVM会读取指定的路径下的Demo.class文件,并加载进内存,
		并会加载Demo的父类(如果没有直接父类的情况下)。
	2,在堆内存中开辟空间,分配地址。
	3,并在对象空间中,对对象中的属性进行默认初始化。
	4,调用对应构造函数进行初始化。
	5,在构造函数中,第一行会先调用父类中的构造函数进行初始化。
	6,父类初始化完成后,在对子类的属性进行显示初始化。
	7,在进行子类构造函数的特定初始化。
	8,初始化完成后,将地址值赋值给引用变量。
	
	final关键字
	final可以修饰类、方法、变量。
	final修饰的类不可以被继承。
	final修饰的方法不可以被覆盖。
	final修饰的变量是一个常量,只能赋值一次。
	内部类只能访问被被final修饰的局部变量。
	
	//继承弊端:打破了封装性。
	
	为什么要用final修饰变量?
	其实在程序中如果一个数据是固定的,那么直接使用这个数据就可以了,但是阅读性差,
	所以给该数据起个名称,而且这个变量名称的值不能变化,所以加上final固定。
	写法规范:	常量的所有字母都大写,多个单词中间用下划线(_)链接。
*/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值