📄 day04.txt
字号:
CoreJava(day04) 2007-12-6 --- 李艳
作业讲解:(课堂代码:MyDate.java)
从今天开始学习java高级特性
1、static(静态):
静态的属性都存储在池里面。在类加载的时候存入。
static可以修饰属性,方法,内部类,语句块
静态属性:(课堂代码:TestCount.java)
例:public class TestCount {
private int count1=0;
private static int count2=0; //类变量
}
TestCount t1=new TestCount();
t1.count1; //普通属性的调用方式
TestCount.count2; 静态属性的使用方法是用用类名调用,也可以用对象来调用,但建议用类名调用
静态方法中不能使用非静态的属性。静态方法里不能使用this,是因为静态方法里根本没有this.
例:public static void test1(){
//count1不可用,count2可以用
}
静态方法不能被非静态的方法覆盖。
静态方法可以被子类的静态方法覆盖,但覆盖以后就没有多态了。
静态语句块:(课堂代码:TestStatic.java,TestTestStatic.java)
static{ //类加载的时候调用
System.out.println("static is called");
}
{ //构造对象的时候调用
System.out.println("is called");
}
static语句块>语句块
静态初始化代码块在类加载的时候运行,所以只执行一次。声明引用时不会进行类加载。
静态初始化代码块和静态方法一样也不能访问非静态成员。
什么情况下算类加载:类在创建一个实例,或用类名. 调用属性或方法的时候会类加载,即需要运行的时候才会类加载
加载子类会先加载父类,语句块的调用也是先父后子。(课堂代码:Person.java)(课堂代码:Student.java)(课堂代码:Test.java)
先加载父类再加载子类,然后再构造(构造也是先父后子),既先加载后构造
静态的好处就是可以用类名.方式去调用
单例设计模式:(课堂代码:Singleton.java)
保证实例唯一,节省内存,构造方法私有 static+private+public
对象不会改变
2、final: (课堂代码:TestFinal.java)
final可以修饰变量、方法、类。
final变量(实例变量(属性),局部变量):
final等于是把栈给锁定了
final修饰的变量,一旦赋值,不能改变,表示属性的值是不可变的
对于实例变量是一个final的,要么在初始化属性时赋值,要么在构造方法中赋值,只能一次且还不能不赋值,即必须在构造对象后有值
若是用final static修饰的常量,必须在类加载后有值,即在声明时赋值或者在静态初始化代码块中赋值,尽量在声明时赋值。习惯上常量用大写。
final方法:表示这个方法是最终的方法,不能在子类中去覆盖这个方法
final类:表示这个类不能被继承,不能有子类,是断子绝孙类。
3、访问权限:
访问范围 子类是否能继承 | 严
|
private 本类内部访问 不能继承 |
|
不写(default) 本类+同包 不一定,要看子类和父类是否同包 |
|
protected 本类+同包+不同包子类 子类能继承 |
|
public 公开 能继承 | 宽
public,final,不写(default),可以修饰类
public,private,protected,不写(default),static,final 可以修饰属性,一般会用private,static,final
public,private,protected,不写(default),static,final 可以修饰方法。
public,private,protected,不写(default),可以修饰构造器
4、Object类:
全称:java.lang.Object
equals:(课堂代码:Student1.java,TestStudent.java)
public boolean equals(Object obj): 判断两个对象内容是否“相等”。
==(双等号):判断的是地址,Object里的equals方法和==判断的是一样的,所以要想比较自己写的类的内容是否相同,就要重写equals方法
.equals :判断的是内容
重写equals方法时:
1、判断是否为null if(obj==null) return false;
2、判断类型是否兼容 if(obj instanceof 类)
3、强制类型转换: 判断每一个不可能会重复的属性:简单类型用==,对象类型用.equals,若每一个属性内容都相等就可以返回true.
继承:代码复用,代码维护
多态可以使参数传递灵活、简洁,定标准
多态+重写可以帮助父子类之间的传递更方便、更灵活。
重载:便于用户使用
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -