完全限定名(qualified class name) - 使用類(lèi)的時(shí)候,如果類(lèi)名沖突了,可以加上它的包名加以區(qū)分:例如:
org.homework.present.Person person1 = new org.homework.present.Person("捶捶");
org.homework.future.Person person2 = new org.homework.future.Person("大錘");一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,接口里的方法如果有默認(rèn)實(shí)現(xiàn),實(shí)現(xiàn)了接口以后可以不重寫(xiě)
接口可以繼承接口(可以多重繼承)
標(biāo)志性接口 - 沒(méi)有方法,但是可以讓類(lèi)具備某種能力
/**
* 生物接口
* @author apple
*
*/
public interface Creature {
}
- 用instanceof判斷時(shí),后面可以寫(xiě)類(lèi),也可以寫(xiě)接口
Arrays工具類(lèi)
Java里有一個(gè)arrays的工具類(lèi),里面可以調(diào)用sort排序方法,對(duì)于整數(shù)和字符串都可以進(jìn)行排序。
Java里的工具類(lèi),方法都是靜態(tài)方法。都是發(fā)給類(lèi)的消息
若要給一組對(duì)象進(jìn)行排序,則不能直接調(diào)用sort方法,要先在該對(duì)象所對(duì)的類(lèi)里面實(shí)現(xiàn)Comparable<T>接口,然后重寫(xiě)compareTo方法。然后在該方法中,由程序員自己定到底用對(duì)象的什么屬性進(jìn)行排序:例如:
先創(chuàng)建了一組學(xué)生對(duì)象;
Student[] array1 = {new Student("wang dachui", 15),
new Student("jack", 30),
new Student("qiao feng",50),
new Student("zhang sanfeng", 120)
};
Arrays.sort(array1);
重寫(xiě)compareTo方法,在里面定了由學(xué)生的年齡來(lái)排序(也可由姓名排序)
- 返回int類(lèi)型,返回的正負(fù)數(shù)只覺(jué)得兩個(gè)比較的元素需不需要調(diào)換位置。若要升序,this - other,this compareTo other。降序,other - this,other compareTo this。
@Override
public int compareTo(Student o) {
return this.age - o.age;
//return this.name.compareTo(o.name);
}
工具類(lèi)
工具類(lèi)也可自己寫(xiě)
- 寫(xiě)一個(gè)工具類(lèi)的要點(diǎn):
1.所有的方法都應(yīng)該是靜態(tài)方法
2.將構(gòu)造器私有,不允許調(diào)用構(gòu)造器創(chuàng)建對(duì)象
3.工具類(lèi)一半不會(huì)被繼承,所以通常是final的 - final的用法
1.方法前加final,方法不能被重寫(xiě)
2.類(lèi)前加final,類(lèi)不能被繼承
3.變量前加final,變量變成常量,不能被賦值
public final class CommonUtil {
private CommonUtil(){
throw new AssertionError();//這樣寫(xiě),連內(nèi)部都不能調(diào)用這個(gè)構(gòu)造器
}
public static int randomInt(int min,int max){
return (int) (Math.random() * (max - min + 1) + min);
}
public static Color RandmColor(){
return new Color(randomInt(0, 255), randomInt(0, 255), randomInt(0, 255));
}
}
對(duì)象的克隆
- 克隆對(duì)象,比 new + 構(gòu)造器 更好
- 創(chuàng)建對(duì)象,實(shí)現(xiàn)Cloneable接口
- 重寫(xiě)clone方法
子類(lèi)在重寫(xiě)父類(lèi)方法時(shí),若父類(lèi)方法時(shí)受保護(hù),子類(lèi)可以改為公開(kāi),讓它更好被訪(fǎng)問(wèn)
@Override
public Student clone() {
Student temp = null;
try {
temp = (Student) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return temp;
}
public static void main(String[] args) {
Student s1 = new Student("王大錘", 20);
Student s2 = s1.clone();
System.out.println(s1);
System.out.println(s2);
s2.setName("大錘");
s2.setAge(15);
System.out.println(s2);
}