1. 重载和重写,方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。
- 方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
- 方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
- 方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。
2. final
- 被final修饰的类不可以被继承。
- 被final修饰的方法不能被重写。
- 被final修饰的字段在初始化后不能被修改。
3. 实例和静态
- 实例字段在每个实例中都有自己的一个独立“空间”,但是静态字段只有一个共享“空间”,所有实例都会共享该字段。
- 不推荐用实例变量.静态字段去访问静态字段,因为在Java程序中,实例对象并没有静态字段。在代码中,实例对象能访问静态字段只是因为编译器可以根据实例类型自动转换为类名.静态字段来访问静态对象。
- 静态方法内部,无法访问this变量,也无法访问实例字段,它只能访问静态字段。
4. 包
- 在Java中,我们使用package来解决名字冲突。
- Java定义了一种名字空间,称之为包:package。一个类总是属于某个包,类名(比如Person)只是一个简写,真正的完整类名是包名.类名。
- 包没有父子关系。java.util和java.util.zip是不同的包,两者没有任何继承关系。
- import 其他包的类
- 代码中class的查找范围:
1. 如果是完整类名,就直接根据完整类名查找这个class;
2. 如果是简单类名,按下面的顺序依次查找:
查找当前package是否存在这个class;
查找import的包是否包含这个class;
查找java.lang包是否包含这个class;