代码块
有普通代码块、构造代码块、静态代码块等
静态代码块优先于主方法和构造块执行且仅执行一次
内部类:在一个类的内部还存在一个类
有点:可以方便的访问外部类的私有成员
注意这个语句:Outerout = new Outer();Outer.Inner in = Outer.new Inner();
一个内部类若使用static关键字声明的话,那么这个内部类可以直接通过“外部类.内部类”来访问它。
内部类可以定义在一个类的任意地方。
在方法中定义的内部类,可以直接访问外部类的各个成员,但是如果要访问方法中的参数,则此参数需要使用final关键字声明。
继承:扩展已有类的功能。
格式:calss 子类名 extends 父类名;
限制:一个子类只允许继承一个父类。Java中允许多层继承,但是不允许多重继承。
继承不能够继承父类的私有操作,只能继承全部的公共操作。
子类实例化的时候会先实例化一个父类。
方法的覆写:子类覆写方法的时候不能拥有比父类更严格的访问权限(privileges)。
如果一个子类想要覆写父类的private权限的方法的做法是不可能的,因为子类不能继承父类的私有操作。如果子类中有个和父类的private方法重名的方法的话,这样对Java来说是新建了一个类。
权限等级:public< default < private 『 不严格-->严格 』
方法重载与覆写的区别:
比较点 | 重载 | 覆写 |
英文单词 | overload | override |
概念 | 方法名称相同,参数的类型或者个数不同 | 方法名称、参数的类型或者个数完全不同 |
注意点 | —— | 访问权限不能变小 |
范围 | 在一个类中发生 | 在继承类中发生 |
This与super的区别
比较点 | This | Super |
属性 | This属性表示的是本类中的属性,如果在子类中找不到属性则会从父类中查找 | Super属性表示直接找到父类中的属性 |
方法 | This.方法()表示调用本类中的方法,如果找不到则从父类中查找 | 表示从子类直接找到父类中被子类覆写过的方法 |
构造 | 可以调用本类中的其他构造方法,但是要求至少有一个构造方法是没有this() | 从子类中调用父类的构造方法,子类不管如何编写代码,则肯定要先调用父类的构造 |
特殊点 | This表示当前对象 | —— |