方法的重写 (override)
1. 发生在父子类方法签名相同,方法体不同
2. 重写方法被调用时,看对象的类型不看引用的类型
3. 重写和重载的区别:
1)重载—发生在一个类中,方法名相同,参数列表不同,方法体不同
遵循编译期绑定,通过参数(引用)的类型来绑定调用方法
2)重写—发生在父子类中,方法签名相同,方法体不同
遵循运行期绑定,通过对象的类型来绑定调用方法
4. 重写注意事项—”两同两小一大”原则
1)”两同”—方法名,参数列表相同
2)”两小”—子类的返回值类型小于或等于父类
*返回值类型为void或者基本类型,父子类必须相同
*返回值类型为引用类型,子类必须小于或等于父类
—子类的抛出异常小于或等于父类
3)”一大”—子类的访问权限大于或等于父类
import
- 用来引进类
- 语法:import 包名.类名
- 同包中的类可以直接访问
不同包中的类有两种方式访问
1)用import语句导入 import 包名.类名
2)写全称 包名.类名—不建议
package
- 避免类名冲突,所有字母小写
- 可以有层次结构 全称:包名.类名
- 一般命名规范:公司域名反写.项目名称.模块名.类名
访问控制修饰符
- public 权限最大,可以在任何地方调用
- protected 受保护的,可以在子类,本类,同包类访问
- private 权限最小,只可以在本类中访问
- 默认的 可以在本类和同包类访问
- 类可以用public和默认的修饰,类成员可以用以上四种修饰
static
成员变量分两种
1. 实例变量—属于对象的,存在堆中,通过对象.来访问,可以有很多份
2. 静态变量—属于类的,存在方法区中,通过类名.来访问,有且仅有一份
静态变量
1. static修饰的成员变量时静态变量
2. 当对象中所有数据都一样时,可以使用静态变量(举例:学生类中的学生班级)
静态方法
1. static修饰的方法是静态方法,通过类名.方法名来访问
2. 属于类,存在方法区,有且仅有一份
3. 静态方法没有隐式this传递,所以不能在静态方法中对实例变量进行直接访问
4. 方法的操作与对象无关,只跟参数有关时用静态方法
静态块
1. 由static修饰的块
2. 属于类的,在类被加载期间只自动执行一次
3. 常被用于初始化静态资源(图片,音频,视频)
final
- final修饰变量—变量不可再被改变
1)修饰成员变量—可以声明同时初始化,也可先声明然后在构造方法中初始化
2)修饰局部变量—只要用之前初始化即可 - final修饰方法:方法不能重写
- final修饰类:类不能被继承