Java學習基礎篇(-)類和對象


本科大三時自學過java,上研之後就基本沒再碰過了,現在想要重新撿起來,所以把這些整理一下,主要是用來督促自己的學習,該資料整理來源於尚硅谷-佟剛的教學視頻,僅用來學習。


面向對象的三大特徵
-封裝(Encapsulation)
-繼承(Inheritance)
-多態(Poiymorphism)

類(class)是對一類事物的描述(抽象);對象(object)是該類實物的每個個體(實際存在),也稱實例(instance)

【Java類】 屬性(比如說一個人的姓名、身高等),也叫做類的成員變量,方法(比如說一個人學習的方法,工作的方法等),也叫類的成員函數

聲明類
語法格式
[< 修飾符>] class < 類名>
{
[<屬性聲明>]
[<構造器聲明>]
[<方法聲明>]
}
說明:修飾符public:類可以被任意訪問
類的正文要用{ }括起來
}

聲明屬性
語法格式:
[<修飾符>] 類型 < 屬性名> [=初值] ;
說明:修飾符 private: 該屬性只能由該類的方法訪問。
修飾符 public: 該屬性可以被該類以外的方法訪問。
類型:任何基本類型,如int、boolean或任何類。
舉例:

public class Person{
   private int age;             //聲明private變量 age 
   public String name = “Lila”; //聲明public變量 name 
}

聲明方法
語法格式:
<修飾符> <返回類型> <方法名>([< 參數表>]) {
[< 語句>]
}
說明: 修飾符:public,private,protected 等。
返回類型:return語句傳遞返回值。沒有返回值:void。

對象的創建和使用
-使用 new +構造方法 創建一個新的對象;
-使用 “對象名.對象成員” 的方式訪問對象成員(包括屬性和方法);

 如果創建了一個類的多個對象,對於類中定義的屬性,每個對象都擁有各自的一套副本,且互不干擾

 類的訪問機制:
 在一個類中的訪問機制:類中的方法可以直接訪問類中的成員變量。(static方法訪問非static方法會編譯出錯)
 在不同類中的訪問機制:先創建要訪問類的對象,再用對象訪問類中定義的成員。

對象的創建

class Person
{
    int age;
    void shout()
    {
        System.out.println(“oh,my god! I am “ + age);
    }
}
Person p1 = new Person();//執行完後的內存狀態

這裏寫圖片描述

當一個對象被創建時,會對其中各種類型的成員變量自動進行初始化賦值。除了基本數據類型之外的都是變量類型都是引用類型。

對象的使用
創建新的對象之後,我們就可以使用“ 對象名.對象成員 ”的格式,來訪問對象的成員

class TestPerson 
{
    public static void main(String[] args)//上面程序運行的內存佈局如下圖 
    {
         Person p1 = new Person();
        Person p2 =new Person();
        p1.age = -30;
        p1.shout();
        p2.shout();
    }
}

這裏寫圖片描述
對象的生命週期
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

匿名對象

我們也可以不定義對象的句柄,而直接調用這個對象的方法。這樣的對象叫做匿名對象, 如:new Person().shout();
如果對一個對象只需要進行一次方法調用,那麼就可以使用匿名對象。
我們經常將匿名對象作爲實參傳遞給一個函數調用。

練習
1、創建一個Person類,其定義如下:

要求:(1)創建Person類的對象,設置該對象的name、age和sex屬性,調用study方法,輸出字符串“studying”,調用showAge()方法顯示age值,調用addAge()方法給對象的age屬性值增加 i 歲。
(2)創建第二個對象,執行上述操作,體會同一個類的不同對象之間的關係。

public class Person {
    private String name;
    private int age;
    private int sex;
    void stduy(){
        System.out.println("studying");
    }
    void showAge(){
        System.out.println("age:"+age);
    }
    int addAge(int i){
        age=age+i;
        return(age);

    }
    public static void main(String[] args) {
    //創建對象1
        Person p=new Person();
        p.name="Tom";
        p.age=3;
        p.sex=1;
        System.out.println("name:"+p.name+"\n"+"sex:"+p.sex);
        p1.study();
        p.addAge(3);
        p.showAge();//age:6
        //創建對象2
        Person p1=new Person();
        p1.name="Lili";
        p1.age=30;
        p1.sex=2;
        System.out.println("name:"+p1.name+"\n"+"sex:"+p1.sex);
        p1.study();
        p1.addAge(2);
        p1.showAge();//age:31
    }
}

2、 利用面向對象的編程方法,設計類Circle計算圓的面積。

public class CircleArea {

    double r;
    double area;
    double CircleAreaCaluate(){
        area=2*Math.PI*Math.pow(r,2);
        return(area);
    }
    public static void main(String[] args) {
        CircleArea ca=new CircleArea();
        ca.r=2.0;
        ca.area=0;
        ca.CircleAreaCaluate();
        System.out.println("r="+ca.r+"\n"+"arae:"+ca.area);
        //r=2
        //arae:25.132741228718345                                                                                      
    }
}
發佈了24 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章