天天看點

菜雞自學JAVA坎坷路day.6(import的使用,extends,override)

1.包機制(package):

菜雞自學JAVA坎坷路day.6(import的使用,extends,override)
菜雞自學JAVA坎坷路day.6(import的使用,extends,override)

域名倒着寫。

菜雞自學JAVA坎坷路day.6(import的使用,extends,override)
菜雞自學JAVA坎坷路day.6(import的使用,extends,override)
菜雞自學JAVA坎坷路day.6(import的使用,extends,override)

執行個體說明如下:

/**
 * import的使用方法
 * author :Wang
 * 
 * 
 */
package cn.wang;//包必須是非注釋語句的第一句

import project02.user;//先是包名後是類名"包名.*"是全部導入,導入的這個包必須是public類型的才行    同一個包内可以直接使用裡面的類
import java.util.Date;
import java.sql.*;//他和上面那一行都有Date這個類
import static java.lang.Math.*;//導入Math的所有靜态屬性;

public class testImport {
	public static void main(String[] args) {
		user u2 = new user();
		
		project02.testClass u3 = new project02.testClass();//要是沒有導入的話就要指明這個類的位址
		
		Date d = new Date();//這時候會預設調用指向明了的java.util.Date
		
		java.util.Date d2 = new java.util.Date();//這樣就可以清楚的說明調用的是哪一個類
		
		System.out.println(PI);//因為導入了靜态的他      是以不用加字首了
	}

}
           

2.面向對象的三大特征:

菜雞自學JAVA坎坷路day.6(import的使用,extends,override)

這章的學習方法:溫新而知故

(1).繼承(extends)

菜雞自學JAVA坎坷路day.6(import的使用,extends,override)

注意:Java的接口可以多繼承,但是他的類隻能單繼承;

每個類都預設為是Object的子類;(類一般首字母大寫),可以在選中類以後用crtl加T可以看一個類的關系(繼承結構);

菜雞自學JAVA坎坷路day.6(import的使用,extends,override)

A  instanceof B 判斷A是不是B的執行個體對象;

package cn.wang;
/**
 * 
 * 測試extends
 * @author HP
 *
 */

public class Person {
	String name;
	int age;
	
	public void rest() {
		System.out.println("我想要休息一會。");
	}
	public static void main(String[] args) {
		Student stu = new Student();
		stu.name = "wangtong";
		stu.rest();
		System.out.println(stu.name);
		System.out.println(stu instanceof Person);
		System.out.println(stu instanceof Student);//instanceof   判斷這個對象就是不是Student類的執行個體化;
	}

}

class Student extends Person{
	int height;
	
	public void study() {
		System.out.println("學習兩個小時");
	}
}
           

3.重寫(override)

菜雞自學JAVA坎坷路day.6(import的使用,extends,override)
package cn.wang;
/**
 * 測試重寫
 * @author Wang
 *
 */

public class TsetOverride {
	public static void main(String[] args) {
		House a = new House();
		a.stop();//調用父類的stop()
		a.run();//調用自己重寫的run()
		
	}
}

class Vehical{
	public void run() {
		System.out.println("滴滴滴   的跑");
	}
	
	public void stop() {
		System.out.println("刹車");
	}
	
	public Person passenger() {//直接調用一個包下面的Person類
		return new Person();
	}
}

class House extends Vehical{
	public void run() {//重寫父類的run
		System.out.println("策馬奔騰");
	}
	
	public Student passenger() {//這裡重寫的傳回值可以是Person的子類Student而不能是Person的父類Object;
		return new Student();
	}
}
           

4.Object類的toString

package cn.wang;
/**
 * 測試Object
 * @author Wang
 *
 */

public class TestObject {
	public static void main(String[] args) {
		Object  obj = new Object();
		System.out.println(obj.toString());
		/* 這個是tostring()的源碼,作用就是列印他的位址結果為[email protected],源碼也可以被重寫
		 * public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }*/
	} 
}
           

5.equals

菜雞自學JAVA坎坷路day.6(import的使用,extends,override)
package cn.wang;
/**
 * equals的測試與重寫
 * @author Wang
 *
 */

public class TestEquals {
	public static void main(String[] args) {
		
		User u1 = new User(1,"wang");
		User u2 = new User(1,"wang");
		
		System.out.println(u1.equals(u2));
		System.out.println(u1 == u2);//==相等的條件是看他們的位址是否相等  
		/*
	 public boolean equals(Object obj) {//這是equals的源碼  預設的是與==一樣的判斷位址	
        return (this == obj);
    }
		 */
		
	}	
	

}

class User{
	int id;
	String name;
	
	public User(int id ,String name) {
		this.name = name;
		this.id = id;
	}


public boolean equals(Object obj) {//但在我們的實際開發中,通常會認為兩個對象的内容相等時,則兩個對象相等,equals傳回true。對象内容不同,則傳回false  是以對他進行重寫
		
		if(this == obj) //如果地值相等肯定就是相等的
			return true;
		
		User other = (User)obj;//将傳過來的對象強制轉化成User類型的對象  因為  你的重寫是為User重寫的傳進來的對象肯定是User類型的
		
		if(id == other.id) {
			return true;
		}
		return false;//注意這個要傳回的代表整個函數的傳回要是沒有就報錯;
		
	}
}
           

注意: 請仔細閱讀注解;

6.繼承樹的追溯:super()

菜雞自學JAVA坎坷路day.6(import的使用,extends,override)
菜雞自學JAVA坎坷路day.6(import的使用,extends,override)
菜雞自學JAVA坎坷路day.6(import的使用,extends,override)
/**
 * 測試super和繼承樹的追溯;
 * @author Wang
 *
 */

public class TestSuper {
	public static void main(String[] args) {
		Child C = new Child();//構造Child類的時候就是先構造他的根類Object然後構造Father最後構造自己    和static的初始化塊(對類進行初始化)一樣
		C.run();
	}
}

class Father {
	Father(){
		System.out.println("FatherClass Construct.");
	}
	
	public void run() {
		System.out.println("Father Run");
	}
	
}

class Child extends Father{
	
	Child(){
		super();//構造方法的第一句總是他   不管你寫不寫
		System.out.println("ChildClass Contruct.");
	}
	
	public void run() {
		super.run();//調用父類中被子類override的run();
		System.out.println("Child Run");
	}
}