OOP.Unit04
达内
知识体系
访问控制
包的概念
- 定义类的时候需要指定包的名称,仅以类名做类的唯一标识,不可避免出现命名冲突的问题
- 包package概念的提出很好解决这个问题
- 包名命名也要有一定规范:com.keji.commons.core.Jiajia
- 访问一个类需要使用该类的全称,但这样写很麻烦,所以用import免去写全称
- import (包名.类名)
访问控制修饰符
- 封装就是为了给外提供可调用的、稳定的功能
- 封装降低了代码出错的可能性,便于维护,同时保护数据安全,模块之间解藕
- public protected 默认 private修饰成员时候,分别权限:本类;同一个包中类;子类;其他类
- 修饰类只能用public和默认,public中的类可以被任何类使用,默认的只能同一包中类使用
static和final
static关键字
- static修饰的成员变量不属于对象的数据结构,属于类的变量,通常通过类名点操作来引用static成员;static变量和类的信息一起存在方法区,且只有一份
- static修饰方法:一般方法的调用都要有引用,但static修饰方法不需要针对某个对象进行操作,其运行结果只与输入参数有关,如:double c = Math.sqrt(3.0*3.0 + 4.0*4.0); 多用于提供一些"工厂方法"
- static块:属于类的代码块,类加载期间执行的代码块,只执行一次,可以在软件中加载静态资源
final关键字
- 修饰的成员变量就不可变,初始化要么声明同时初始化,要么构造函数中初始化
- 也可以修饰局部变量,使用之前初始化即可
- 修饰的方法不可以被重写,防止子类定义方法时候的不经意重写
- 修饰的类不可以被继承,例如:String、Math、Integer、Double类等
-
经典案例
对知识多加记忆
课后作业
笔记
- 子类继承父类,重写父类的方法,然后可以super.f()来使用父类该方法的代码,不然会别冲掉
- 下面代码结果是:
package day02;public class SlowPoint extends Point{ public void move(int x, int y){ System.out.println("SolwPoint move parameter"); move(); } public static void main(String[] args) { SlowPoint sp = new SlowPoint(); sp.move(10, 20); }}class Point { public void move(int x, int y){ System.out.println("Point move parameter"); } public void move(){ System.out.println("Point move"); }}结果是:SolwPoint move parameterPoint move
- package用于防止类名冲突,import导入包名加类名,防止使用类名要写包名
- 记忆:public protected 默认 private
- static final关键字的用途和意义
- 基于上面类的继承,重构,来完成控制台中控制T类的下落,左右移动