JAVA编程思想学习笔记(六)复用类

复用类

组合语法

组合语法就是在类中用其他类的对象作为本类的成员变量。
编译器不会为每一个引用都创建默认对象,想要初始化引用,可以在下列位置进行:

  1. 在定义对象的地方
  2. 在类的构造器中
  3. 在使用对象之前,惰性初始化
  4. 使用实例初始化

继承语法

关键字:extends
继承时,会自动得到基类中所有的域和方法。
类在初始化的时候是由内向外的,也就是说先初始化最顶层的父类,然后初始化次一层的父类,以此类推,最后初始化当前类。
不特意创建构造器的话,编译器会为其创建默认构造器,但是要是创建了构造器,就要用super显式的调用父类构造器。
在类垃圾回收的时候,是与初始化方向反的。

名称屏蔽

在对基类方法进行覆盖时,有可能覆盖的方法与父类的参数不同,因为参数不同,编译器会将其作为方法的重载来处理,如果你想覆写而不是想重载的时候,可以用@Override来注解,它并不是关键字,但是可以当做关键字来使用。

protected

protected关键字,对于用户而言是private,对于继承类是public。

向上转型

方法的参数对象可以是该参数类型的所有子类,因为父类所具有的变量和方法子类都有,所以可以使用向上转型。
比如如下代码:

class A{
	int i;
	void fun(){}
}

public class B extends A{
	public static void main(String[] args){
		B b= new B;
		funs(b);
	}
	static void funs(A a){
		System.ot.println(a.toString());
	}
}

final关键字

final数据:

  1. 一个永不改变的编译时常量
  2. 一个在运行时被初始化的值,而你不希望他改变。

一个既是static又是final的域只占据一段不能改变的存储空间。
当对象是引用不是数据时,引用恒定不变,但是对象自身是可以改变的。
空白final
指被声明为final类型又未给定初值的域。无论什么情况,编译器都确保空白final在使用前必须被初始化。
final参数:
java允许在参数列表中以声明的方式将参数指明为final。这意味着你无法更改参数引用所指向的对象。
final方法:

  1. 方法锁定,以防任何继承类修改他的含义,不会被覆盖。
  2. final指定的方法转为内嵌调用,提高效率。
  3. 类中所有的private方法都隐式的指定为final方法。
    final类:
    final类不会有子类。

猜你喜欢

转载自blog.csdn.net/qq4131533523/article/details/84672017