方法重写(override/overriding):重新写、覆盖
重写:必须要有继承、发生在父子类中,方法名相同,参数列表相同
重写方法被调用时,看对象的类型(也就是子类类型)
重写和重载的区别:
重写:必须有继承,发生在父子类中,方法名相同,参数列表相同(一般用于在派生类中修改超类的方法)
重载:发生在同一个类中,方法名相同,参数列表不同,与返回值无关(是完全不同的方法,只是方法名相同而已)
package和import:
package:声明包
作用:避免类的命名冲突,同包中的类不能同名,不同包中的类名可以同名,
类的全称:包名.类名,报名常常有层次结构
建议:包名所有字母都是小写,说明package声明包必须位于第一行
import:导入类
同包中的类可以直接访问,不同包的类不能直接访问,若想访问:
先import导入类,在访问类或使用类的全称进行访问
4.访问修饰符:
封装的意义:隐藏一些东西,暴露一些东西,来保护数据的安全
public:公开的,任何类
private:私有的,本类
protected:受保护的,本类、派生类、同包类
默认的:什么也不写,本类、同包类
1.类的访问权限只能是public或者默认的
2.类中成员(包含、类的属性、行为、方法等)的访问权限如上四种都可以
static:静态的
静态变量:
由static修饰,属于类,存储在方法区中,只有一份,常常通过类名点来访问
何时用:所有对象所共性共享的数据(图片、音频、视频等)
静态方法:
有static修饰,属于类存储造方法区中,只有一份,常常通过类名点来访问,静态方法没有隐式this传递,所以不能直接访问实例成员
何时用:方法的操作与对象无关
静态代码块:
由static修饰,属于类在类被加载时期自动执行,一个类只能被加载一次,所以静态块也只执行一次
何时用:初始化/加载静态资源(图片、音频、视频等)
补充:
1.成员变量分两种:
实际变量:没有static修饰,属于对象的,存储在堆中,有几个对象就有几份,通过引用打点来访问
静态变量:有static修饰,属于类的,存储在方法区,只有一份,通过类名打点来访问
2.内存管理:有JVM来管理的
堆:new出来的对象(包括成员变量)
栈:局部变量(包括方法的参数)
方法区:.class字节码文件(包含静态变量、所有方法)
3.在构造方法中给实例化变量做初始化
在静态块中给静态变量做初始化