本科大三時自學過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
}
}