1. 程式人生 > 其它 >java學習第9天

java學習第9天

類和物件:

萬物可被看為物件,去關注瞭解物件的過程被稱為面向物件,對物件進行的程式設計。

類是現實生活中一類具有共同屬性和行為的事物的抽象,類的特點:類是物件的資料型別,類是具有相同屬性和行為得一組物件集合、

物件的屬性:物件具有的各種特徵,每個物件的每個屬性都擁有特定的值。

物件的行為:物件能執行的操作

類是Java程式的基本組成單位。類的屬性通過成員變數來體現。行為通過成員方法來體現。方法不含Static

類的定義:public class 類名{

//定義成員變數

//定義成員方法

}

物件的使用:

建立物件: 格式:類名物件名=new 類名();

Phone p= new Phone();

使用物件:

使用成員變數

格式:物件名.變數名 例:p.brand

使用成員方法

格式:物件名.方法名 例 p.call

案例:

package myproject;

public class Student {

int age;

String name;

public void Study() {

System.out.println("好好學習,天天向上");

}

public void doHonework() {

System.out.println("敲程式碼");

}

}

package myproject;

public class StudentTest {

public static void main(String[] args) {

Student a=new Student();

a.age=19;

a.name="xiaoming";

System.out.println(a.name);

System.out.println(a.age);

a.doHonework();

a.Study();

}

}

物件記憶體圖

多個物件指向不同的記憶體,多個物件指向相同的記憶體(其中一個物件值改變,另一個之也會發生改變)

成員變數和區域性變數

區別(1)類中位置不同,成員變數在類中方法外,區域性變數在方法內或方法宣告上。(2)記憶體中位置不同,成員變數在堆記憶體,區域性變數在棧記憶體。(3)生命週期不同:成員變數隨著物件的存在而存在,隨著物件的消失而消失,區域性變數隨著方法呼叫而存在,隨著方法呼叫完就消失,(4)初始化值不同:成員變數有預設的初始值,區域性變數沒有預設的初始值,必須先定義,賦值,才能使用。

Private關鍵字

是一個許可權修飾符,可以修飾成員(成員變數和成員方法),作用是保護成員不被別的類使用,被private修飾的成員只在本類中才能被訪問。

針對private修飾的成員變數,如果需要被其他類使用,提供相應的操作

提供“get變數()”方法,用於獲取成員變數的值,方法用public修飾,提供“set變數名(引數)方法,用於設定成員變數的值,方法用public修飾。

案例:

package myproject;

public class Student {

private int age;

String name;

public void setAge(int a) {

if(age>120||age<0) {

System.out.println("年齡錯誤");

}else {

age=a;

}

}

public int getAge() {

return age;

}

public void Study() {

System.out.println("好好學習,天天向上");

}

public void doHonework() {

System.out.println("敲程式碼");

}

public void show() {

System.out.println(age+" "+name);

}

}

package myproject;

public class StudentTest {

public static void main(String[] args) {

Student a=new Student();

a.setAge(19);

a.name="xiaoming";

a.show();

a.doHonework();

a.Study();

}

}

This 關鍵字this 修飾的變數用於指代成員的變數,方法的形參如果與成員變數同名,不帶this修飾的變數指的是形參,而不是成員變數,方法的形參沒有與成員變數同名,不帶this修飾的變數指的是成員變數。

什麼時候使用this呢?

解決區域性變數隱藏成員變數

This:代表所在的類的物件的使用

方法被哪個物件呼叫,this就代表哪個物件。

package myproject;

public class Student {

private int age;

private String name;

public void setAge(int a) {

if(age>120||age<0) {

System.out.println("年齡錯誤");

}else {

age=a;

}

}

public int getAge() {

return age;

}

public void setName(String name) {

this.name=name;

}

public String getName() {

return name;

}

public void Study() {

System.out.println("好好學習,天天向上");

}

public void doHonework() {

System.out.println("敲程式碼");

}

public void show() {

System.out.println(age+" "+name);

}

}

package myproject;

public class StudentTest {

public static void main(String[] args) {

Student a=new Student();

a.setAge(19);

a.setName("xiaoming");

a.show();

a.doHonework();

a.Study();

}

}

封裝:封裝是面向物件的三大特徵(繼承,封裝,多型)。

將類的某些資訊隱藏在類內部,不允許外部程式直接訪問,而是通過該類提供的方法實現對隱藏資訊的操作和訪問,成員變數private,提供對應的getXxx()/setXxx()方法

封裝的好處:通過方法來控制成員變數的操作,提高了程式碼的安全性,把程式碼用方法進行封裝,提高了程式碼的複用性。

構造方法:

概述:完成物件的初始化,與建構函式類似。

構造方法的注意事項:任何物件都有建構函式,在不宣告構造方法使系統會預設宣告構造方法。