Java學習第九天

  java

(package) 用於管理程序中的類,主要用於解決類的同名問題。包能夠看出目錄。編程

 

包的做用網絡

[1] 防止命名衝突。dom

[2] 容許類組成一個單元(模塊),便於管理和維護jvm

[3] 更好的保護類、屬性和方法 ide

 

   包命名規範工具

包命名原則:始終保持類的全路徑惟一。ui

 

規範:this

[1]包名由小寫字母組成,不能以圓點開頭或結尾。圓的有特殊意義——包分隔符spa

 

[2]包名以前最好加上惟一的前綴,一般使用組織倒置的網絡域名。如:域名javagroup.net

package net.javagroup.xx

[3]包名後續部分依不一樣機構內部的規範不一樣而不一樣

package net.javagroup.project1.projectname.xx

 

     導包

import 用於導包,告訴類須要的其餘類在什麼位置!

    1.   jvm提供的包

包名

描述

java.lang/語言包

系統默認導入,String類保存在這個包中,因此咱們在使用String時不須要導包

java.util

工具包,一些經常使用的類庫,Scanner,Date,Arrays

java.io

輸入輸出處理,文件的讀寫等

java.net

網絡編程

java.math

數學計算.Math.random

java.awt(C)

這個包中的類用於構建和管理應用程序的圖形用戶界面

 

    1.   靜態導入

若是一個類中定義的屬性和方法都是靜態時,能夠考慮使用靜態導入。jdk1.5+ 出現。

package cn.sxt01;

public class Calc{

    public static float PI = 3.14f;

   

    public static int add(int a,int b){

       return a+b;

    }

}

package cn.sxt02;

 

// import cn.sxt01.Calc;

// 靜態導入

import static cn.sxt01.Calc.*;

public class Test01{

    public static void main(String[] args){

       System.out.println(PI);

       System.out.println(add(1,2));

    }

}

 

思考:若是一個類中還有實例成員,能不能用靜態導入?

 

    1.   繼承
      1.      爲何要使用繼承?

爲了提取兩個類中公共的代碼,能夠使用繼承抽取重複性的代碼到一個公共類中,這個公共的類稱爲父類(super class)。繼承於父類的類稱爲子類(sub class).

 

java繼承的特性

[1] 單根性。在java中,一個類只能有一個直接父類。

[2] 傳遞性。C繼承於BB繼承於AC具備A的特性和行爲。

 

 

B繼承於類A,使用關鍵字extendsB擁有了A中非私有的屬性和方法

 

public class Person{

    String name;

    int age;

   

    public void showInfo(){

       System.out.println("姓名:"+name);

       System.out.println(",年齡:"+age);

    }

}

public class Student extends Person{

   

}

public class Test01{

    public static void main(String[] args){

       Student s = new Student();

       s.name = "張三";

       s.age = 20;

       s.showInfo();

    }

}

若是Person中定義了private 屬性count

 

    1.   Super

super關鍵字表示父類對象,只是一個關鍵字,裏面沒有引用。

 

[1]super訪問父類構造方法

public Dog(String name,int health,int love,String strain){

       /*

       this.setName(name);

       this.setHealth(health);

       this.setLove(love);

       */

       super(name,health,love);

       this.setStrain(strain);

      

    }

 

super調用父類構造方法時,必須寫到構造方法有效代碼第一句

 

[2] super調用父類的非私有屬性

super能夠訪問父類的非私有屬性。私有的屬性不能用super訪問。

 

public class Fruit{

    float price;

}

public class Apple extends Fruit{

   

    public void showInfo(){

       // 不推薦使用

       //System.out.println("價格:"+price);

       //System.out.println("價格:"+this.price);

       // 當須要訪問父類的屬性時,優先使用super

       System.out.println("價格:"+super.price);

    }

   

}

 

變量隱藏(C)

當子類定義了一個和父類同名的屬性時,在子類中優先訪問子類的屬性,若是要訪問父類屬性必定要加super

public class Fruit{

    float price;

   

    private String color;

   

    int weight = 100;

}

public class Apple extends Fruit{

   

    int weight = 200;

   

    public void showInfo(){

       // 不推薦使用

       //System.out.println("價格:"+price);

       //System.out.println("價格:"+this.price);

       // [1]當須要訪問父類的屬性時,優先使用super

       System.out.println("價格:"+super.price);

      

       // [2]不能訪問父類的私有屬性

       // System.out.println("顏色:"+super.color);

      

       // [3] 訪問和父類同名的變量weight

       System.out.println("重量:"+weight);

       System.out.println("重量:"+this.weight);

       System.out.println("重量:"+super.weight);

    }

   

}

 

一句話:若是要訪問父類屬性,經過super;若是要訪問子類屬性,經過this.

 

 

    1.   子類繼承父類的資源

 

    1.   訪問修飾符

java中存在4類訪問修飾符,分別是private、默認、protectedpublic

 

修飾符

本類

同包子類

同包其餘類

不一樣包子類

不一樣包其餘類

private

默認

protected

public

 

private:私有的,只能在本類能夠訪問。

friendly:默認的,同包可訪問,也稱包訪問權限。

protected:受保護的, ①子類可訪問 ②同包可訪問

public:公共的,均可以訪問

 

    1.   繼承關係的初始化順序

 

繼承關係內存圖

 

    1.   方法的重寫

當子類從父類繼承過來的方法不能知足自身須要時,子類能夠根據自身狀況進行方法重寫(overwrite/override)

方法重寫創建在繼承的基礎上,沒有繼承,就沒有重寫!

 

子類根據自身狀況,能夠選擇部分重寫和徹底重寫。

 

部分重寫

public void showInfo(){

       super.showInfo();

       System.out.println("我是一隻"+this.getStrain());

    }

 

徹底重寫
 

 

重寫的規則

[1]方法名稱相同

[2]參數列表相同

[3]子類的訪問權限必定 >= 父類訪問權限

[4]返回值和父類相同或者是其子類

相關文章
相關標籤/搜索