1. java中的修饰属性(public,private,protect,default)

public:java中访问限制最宽的修饰符。被其修饰的类,属性以及方法不仅可以跨类访问,而且可以跨包(package)访问

private:权限限制最窄的修饰符。被其修饰的类,属性以及方法只能被该类的对象访问,子类不能访问,更不能跨包访问

protect:介于public和private之间。被其修饰的类,属性以及方法只能被类本身的方法以及子类访问,即使子类在不同的包中也可以访问

default:默认访问修饰符,只能在一个包中进行访问

访问修饰符

同一个类

同包

不同包,子类

不同包,非子类

public

protected

 

默认(default)

 

 

private

 

 

 

2. java中的关键字static

(1) static 修饰静态变量或者全局变量(编译时就开辟了空间,且只有一个,可用来做全局变量,可通过类名访问),其他的变量都叫做实例变量。

(2) static 修饰方法,表示整个类的方法,不需要创建对象来调用,可以通过类名来调用,例如Collections和Arrays(数组的操作)整个都是static修饰的方法。不是static修饰的方法必须先new一个对象,才能调用。另外,static方法中只能调用static方法。 public static void main(String[] args),main必须用static修饰。

(3) static 静态代码块,类中独立于成员变量和成员函数。用来初始化全局的变量,且只会比执行一次。

(4) 静态内部类:只能访问外部类的静态成员变量和静态方法。

 

3. java中的关键字final(终极修饰符)

(1) 修饰基本的数据类型,可以认为这些数据是常量,值是不可以再改变的

(2) 修饰其他类的对象,该数据和其指向的对象之间的绑定关系是不可更改的,而对象内部的属性是可以被更改的

(3) 被final修饰的方法是不可以被子类覆盖的,但final修饰的方法可以被子类重载(不可覆盖,可被重载),可以被继承

(4) final修饰的类不能被继承,且其中的方法也一定是final方法(默认),不会再有子类

(5) 常用作 static final,因为final指定的属性要么取值不可更改,要么绑定关系不可更改,所以加上final可以节省内存

(6) final不能修饰构造方法,因为子类默认使用父类的构造方法

Java是从C++发展而来的,C++中,一个类可以同时继承多个父类,但在java中,类只能单继承

 

4. java中的关键字finally

finally修饰的代码块一定会执行,在try和catch模块中return之前需要先执行finally。

try{}

catch(){}

catch(){}

catch(){}

finally{}

 

多个catch来进行捕获,finally中写入最终要执行的语句,无论异常是否发生,都会执行finally中的语句

 

5. java中的多态

编译时多态,编译时就确定了对具体方法体的调用,比如函数的重载(参数不同)

运行时多态,运行时才确定对具体方法的调用,继承中方法的覆盖(子类的方法覆盖掉父类的方法)

 

6. finalize()

垃圾回收器要回收对象的时候,首先就会调用这个类的finalize()方法,finalize()就相当于一个析构函数一样

纯java编写的class不需要重新覆盖这个方法,因为Object已经实现了一个默认的

不过如果C++编写的类的话,需要重新覆盖这个默认的函数

调用的三种情况

(1) 被gc回收时调用

(2) 程序退出时,每个对象调用一次finalize方法

(3) 显式地调用finalize方法

 

7. this

当前对象的一个引用

调用当前对象的属性和方法

 一个类中一个构造方法调用另一个构造方法时,使用this

方法返回当前正在讨论的对象时,可以采用return this的形式

 

java.lang.Object类:所有类的父类,java中所有的类都是继承于Object类

public boolean equals(Object obj):  判断两个对象一样,返回true,只有两个对象指向同一个对象时,才会返回true

public String toString(): 各个类可以根据自己的需求来覆盖该类实现字符串的输出

 

属性的隐藏:子类中出现和父类同名属性的现象,这个时候调用子类函数处理子类的属性,调用父类函数处理父类的属性

方法的覆盖:子类中定义了和父类中具有相同方法头方法的现象

 

在继承中,先调用父类的构造方法,然后调用子类的构造方法

super关键字:可以直接调用父类中被隐藏的属性和方法

super(实参): 调用父类的构造方法

super.父类属性: 调用父类的属性(非隐藏属性可以直接使用,不需要super)

 

this 和 super不能再static修饰的方法内使用

对象 instanceof 类名:判断对象是不是某个类的实例

8.instanceof与getClass的区别
instanceof进行类型检查规则是:你属于该类吗?或者你属于该类的派生类吗?而通过getClass获得类型信息采用==来进行检查是否相等的操作是严格的判断。不会存在继承方面的考虑;