第五章【面向对象(上)】
- 定义类、成员变量和方法
- 创建并使用对象
- 对象和引用
- 方法必须属于类和对象
- Java 方法的参数传递机制
- 递归方法
- 方法的重载
- 实现良好的封装
- 使用package 和 import
- 构造器的作用和构造器的重载
- 继承的特点和用法
- 重写父类方法
- super 关键字的使用
- 继承和多态
- 向上转型和强制类型转换
- 继承和组合的关系
- 使用组合来实现复用
- 构造器和初始化块的作用及区别
- 静态初始化块
Java的静态成员不能访问非静态成员,通常会在静态成员前省略主调(类),在非静态前省略主调(this),java的方法要么属于类要么属于对象,被调用时也只是省略了调用者。
个数可变参数:JDK 1.5之后,添加了个数可变参数的机制,在最后一个(只能出现一个且在最后)加三个点...表示该参数为个数可变的,其实质是数组类型,但是在传参的过程中表达得更为简洁。
方法重载:要求就是两同一不同:同一类的方法名相同,参数列表不同。至于方法的其他部分,如返回值类型、修饰符等,与重载无关。
成员变量:静态(内存中属于类)与非静态(即实例,内存中属于对象)的不需要显示初始化
局部变量:形参、方法局部变量、代码块局部变量,都需要显示初始化
Java的包机制:1、源文件使用 package语句指定包名 2、class 文件存放在对应的路径下
静态导入:
导入全部静态成员变量及方法: import static java.lang.System.*;
导入单个静态成员变量及方法: import static java.lang.System.out;
常用Java包:
- java.lang
- java.util
- java.net
- java.io
- java.text
- java.sql
- java.awt
- java.swing
在构造器调用重载的构造器:this(name, age); //可以在构造器a中调用重载构造器b,必须作为第一条语句
访问控制级别由小到大: private->default->protected->public
java类的构造器执行顺序:从祖先类到目前类,从Object类开始
Java的引用变量有2:编译时类型,运行时类型。
Object obj = new String(); // 例如,Object为编译时,String为运行时,不知如何解释,反正引用变量 obj 只能调用Object类的方法
instanceof:前方编译时类型,后方接口、类
private | default | protected | public | |
同一个类 | √ | √ | √ | √ |
同一个包中 | √ | √ | √ | |
子类中 | √ | √ | ||
全局范围内 | √ |
Java创建一个对象时,
系统先为该对象的所有实例变量分配内存(前提是该类已经被加载过了),
接着程序开始对这些实例变量初始化,
其顺序是:先执行初始化块或声明实例变量时指定的初始值(按照源代码的顺序),再执行构造方法。
然后事实是:使用 javac 编译 java 类后,初始化块会消失并提取到构造器的最前面。
类初始化块(静态初始化块):
只能访问静态(类)变量,只被调用一次
最先被调用,先调用全部静态初始化块(由祖先类到当前类),再调用普通初始化块,再调用构造器。