1.重写(voerride/voerriding)重写、覆盖
-
发生在父子类中,方法名,参数列表都相同。提示向上箭头证明是重写
-
重写方法调用时,根据引用对象是谁进行调用
-
引用类型不同,但是调用重写方法是,看引用对象是谁进行调用 ObserveSubmarine O1=new ObserveSubmarine(); SeaObject O2= new ObserveSubmarine(); O1.move(); //调用的是ObserveSubmarine的重写 O2.move();//调用的是ObserveSubmarine的重写
2.遵循两同两小一大原则;
两同:
-
方法名相同
-
参数列表相同
两小:
-
派生类方法的返回值类型小于或等于超类
-
void和基本类型,必须相等
-
引用类型时,要小于或等于超类
-
派生类方法抛出的异常小于等于超类方法-------API异常时再讲
一大:
-
派生类的访问权限大于超类方法的
package和import
package:声明包
-
作用:避免类的命名冲突
-
同包的类不能同名,类的全称(包.类)。包需要用小写命名(有层次结构)
import:导入类
同包的类可以直接访问,不同包的类不能直接访问
-
先import.类名(全称)再访问---建议
-
类的全称---------不建议
3.访问控制修饰符
public:公开的,任何类
private:私有的,本类
protected:受保护的,本类,派生类、同包类
默认的什么也不写 本类,同类包
访问权限由低到高:pravate<默认的<protected<public
类的访问权限只能是public或默认的,而类中成员的访问权限如上四种都可以
4.static:静态的
静态变量:
-
需要static修饰,
-
属于类,存在方法区中只有一份
-
需要类名打点进行访问,存在方法区
-
何时用:所有对对象所共享的数据(视频,音频,图片)
2.静态方法:
-
由static修饰
-
属于类,存在方法区中,只有一份
-
常常通过类名加点进行访问
-
静态方法中没有隐式this传递,所以不能直接访问实例成员
-
何时用:方法的操作与对象无关时(不需要访问对象的属性)
3.静态块
-
由static修饰
static{ }
-
属于类,在类被加载期间自动执行,一个类只被加载一次
-
何时用:加载/初始化静态资源(图片,音频,视频)
补充:
1.数据(成员变量)私有化(pravate),行为(方法)大部分公开化(public)
2.成员变量的分类:
-
实例变量:没有static修饰,属于对象的,存在堆中,有几个对象就有几份,通过对象引用打点来访问
-
静态变量:有static修饰,属于类,存在方法区中,有且仅有一份,通过类名打点来访问
3.内存管理 jvm管理
堆:new的对象(实例变量,数组的元素)
栈 局部变量(方法的参数)
方法区:class.字节码文件,(静态变量、所有方法)
4.给实例变量初始化建议写在构造方法中,给静态变量初始化建议写在静态块中
静态变量,运行图,对象中的可以有多个,静态变量有一个,所以对象a每次都是从0开始赋值,b确是一个,递增