回顾:
- 向上造型:
----------------------------------------------------------------------------------------------------------------------
package和import:
说明:
-类的访问权限只能是public或默认的
- 超类型的引用指向派生类对象
- 能点出什么是看前面的引用类型-----规定
Person ps=new Student();//向上造型 Student zs=new Student(); Person ps=zs;//也发生了向上造型
2.方法的重写(override):
- 发生在父子类中,方法名相同,参数列表相同
- 重写方法被调用时,看对象类型-----规定
- 重写与重载的区别:
- 重写:发生在父子类中,方法名相同,参数列表相同
- 重载:发生在同一类中,方法名相同,参数列表不同
- package:声明包
- 避免类的命名冲突
- 同包中的类不能同名,但不同包中的类可以同名
- 类的全称:包名.类名
- 包名常常用层次结构,建议所有字母都小写
- import:导入类
- 同包中的类可以直接访问,不同包的类不能直接访问,若想访问:
package a.b.c.d.e.f; class Aoo{//全名 a.b.c.d.e.f.Aoo } package b.y.u.i.f.h; class Aoo{//全名 b.y.u.i.f.h.Aoo }
2.访问控制修饰符:------保护数据安全
- public:公开的,任何类都可以访问
- protected:受保护的(本类,子类,同包类都能访问)-----一般不用(因为后续会讲到getter/setter)
- 默认的:什么也不写,(本类,同包类能访问)-----另外Java不建议用默认权限
- private:私有的,本类才能访问
-类中成员的访问权限如上4种都可以
----访问权限由大到小:public > protected > 默认的 >private
公开 本类子类同包类 本类同包类 本类
class Card{
private String cardId;
private String cardPwd;
private double balance;
}
public boolean checkPwd(String pwd){//检测密码正误,但是看不见密码是多少(保护数据)
if(cardPwd==pwd){
return true;
}else{
return false;
}
}
- final:最终的,不可改变的
- 修饰变量:变量不能被改变
- 修饰方法:方法不能被重写
- 修饰类:类不能被继承(final类不能当父类,可以当子类,也就是说final类不能被继承但是可以继承别人)
2.static:静态的
- 静态变量:由static修饰,属于类,存储在方法区中只有一份,常常通过类名点来访问
(静态变量一般用于所有对象所共享的数据(图片,音频,视频等))
- 静态方法:由static修饰,属于类存储在方法区中,只有一份,常常通过类名点来访问,静态方法中没有隐式this传递,不能直接访问实例成员,何时用:方法的操作与对象无关
- 静态块:由static修饰,属于类,在类被加载期间自动执行,一个类只被加载一次,所以静态块只执行一次
何时用:加载/初始化静态资源(图片,音频,视频等)
静态块:-----初始化静态变量
构造方法:-----初始化实例变量
侦察潜艇图片------设计为静态变量img(减少内存)
假设在构造方法中给img赋值
-----------------new一个对象就会读取一次图片,有100个对象就读100次图片----多次读取图片影响性能
假设在静态块中给img赋值
-----------------只在加载类的时候会读取一次图片,无论new了多少个对象----只读一次,提高性能
静态块
static {
}
补充:
- 数据(成员变量)私有化(private),行为(方法)大部分都公开化(public)
- 成员变量分两种:
- 实例变量:没有static修饰,属于对象的,存储在堆中,有几个对象就有几份
通过引用(对象)点来访问 zs.name/age/address;
- 静态变量:由static修饰,属于类的,存储在方法区中,只有一份
通过类名点来访问
class Aoo{ int a;//实例变量(对象,有几个对象就有几份,先创建对象再通过引用区打点来访问) static int b;//静态变量(类,只有一份,通过Aoo打点进行访问) }
3.内存管理:由JVM来管理
- 堆:new出来的对象(包括实例变量)
- 栈:局部变量(包括方法的参数)
- 方法区:.class字节码文件(包括静态变量,所有方法)