Java的一些概念和关键词

  1. 与this对应,this对应的父类为super,可在子类中用super调用父类方法和父类构造器。
  2. final,可修饰数据、方法、类;private(隐式声明为private,因为不能被重写,研究底层时看看)
    1. static与final一起修饰的域只占据一块不能改变的存储空间。‘
    2. final类不能被继承,所以其中的方法也就默认的相当于都时final方法(不能被重写)了
  3. 结构化编程:先粗后细,先抽象后具体(自己能描述清楚,理明白了再动手);
  4. static属于类,可修饰数据、方法,不可修饰局部变量;(构造器隐式声明为static,归属类所有,底层实现待研究)
  5. finalize,在GC运行前执行,一般用来校验回收状态或回收GC不能回收的东西
  6. enum Day {SUNDAY,WESDAY}
  7. switch 开关语句,支持整型与枚举
  8. label:  break label; continue label; Java中的goto
  9. 静态代码块static{} 与常规代码块{}进行变量初始化
  10. 向上转型:把对某个对象的引用视为对其基类类型的引用的做法  kill(People p){}   kill(new Student())
  11. 绑定:将一个方法调用同一个方法主体关联起来被称作绑定。
    1. 前期绑定:在程序执行前进行绑定(如果有的话,由编译器和连接程序实现)
    2. 后期绑定:运行时根据对象的类型进行绑定,动态绑定、运行时绑定
    3. Java中除了static方法和final方法(private方法属于final方法)
  12. 对于多态,只有普通的方法调用可以是多态的,如果你访问某个域,这个访问就将在编译器进行解析(Thinking In Java)。有这种现象
public class DuoTai {
	
	public static void main(String[] args) {
		Super superSon = new Son();
		System.out.println("superSon.fieldStr---"+ superSon.fieldStr
				+"  superSon.getField()---"+ superSon.getField()
		+"  superSon.getPrivateField()---"+ superSon.getPrivateField());
		Son son = new Son();
		System.out.println("son.fieldStr---"+ son.fieldStr
				+"  son.getField()---"+ son.getField()
				+"  son.getPrivateField()---"+ son.getPrivateField()
				+"  son.getSuperField()---"+ son.getSuperField());
	}
}


class Super {
	public String fieldStr = "Super";
	private String privateField = "privateSuper";
	public String getField(){
		return fieldStr;
	}
	
	public String getPrivateField(){
		return privateField;
	}
}
class Son extends Super {
	public String fieldStr = "Son";
	private String privateField = "privateSon";
	public String getField(){
		return fieldStr;
	}
	public String getSuperField(){
		return super.fieldStr;
	}
	
	public String getPrivateField(){
		return privateField;
	}
}

结果:superSon.fieldStr---Super  superSon.getField()---Son  superSon.getPrivateField()---privateSon
son.fieldStr---Son  son.getField()---Son  son.getPrivateField()---privateSon  son.getSuperField()---Super

解释:对于一个持有子类对象的父类引用,如下图,操作过程是子类从父类继承所有,然后若子类的域或方法覆盖了父类的,则替换掉父类的东西,即为有着子类新东西的老父亲,你只能用父类有的东西,但是东西是新的。

  1. Java的初始化顺序,当某个类被调用时,先找寻是否有对应的父类,然后初始化父类。然后先是静态域的自动初始化(存储空间初始化为二进制0),然后是代码的初始化,然后是普通域的初始化。
  2. 一般Java无需进行清理操作,若需要则与初始化顺序相反,所以在清理方法中应该在最后调用父类的清理方法super.xxx()
  3. 在基类中最好不要使用后续可能被重写的方法,这在多态情况发生时可能会产生某些错误,因为先初始化的是父类,动态调用子类方法时候,可能会出现错误,推荐若是构造器中调用方法的话,调用final的
  4. 重写,子类重写父类的方法,子类的返回类型可以是父类方法返回类型的子类型(协变返回类型)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值