面向對象 面向對象的思想就是值我們要實現一個共功能的時候,我們不自己去做,而是找別人幫我們去做,幫我們去做的這個人就是對象。面向對象強調的是誰來幫我實現這個功能。 類與對象的關係 類 :是一組相關屬性和行為的集合,類可以看成是事物的模板 對象 :對象是一類事物的具體體現,對象是類的一個實列,必然具備 ...
面向對象
面向對象的思想就是值我們要實現一個共功能的時候,我們不自己去做,而是找別人幫我們去做,幫我們去做的這個人就是對象。面向對象強調的是誰來幫我實現這個功能。
類與對象的關係
類:是一組相關屬性和行為的集合,類可以看成是事物的模板
對象:對象是一類事物的具體體現,對象是類的一個實列,必然具備該類的事物屬性和行為。
類是對象的模板,對象是類的實體
下麵來定義一個學生類
//類具有屬性和行為,屬性也叫做成員變數,行為也叫做成員方法
public class Student{
//定義成員變數,因為每一個學生都有不同的姓名和年齡,所以可以把這兩個作為成員變數,成員變數要定義在類中,方法外面,如果定義在方法裡面,就叫做局部變數。變數是有作用域的,成員變數的作用域在整個類中,局部變數的作用域在該方法的裡面。
String name;
int age;
//定義方法,每一個學生都有著吃飯,睡覺,學習的行為,也就是方法
public void eat(){
System.out.println("我是"+name+"在吃飯");
}
public void sleep(){
System.out.println("我是"+name+"在睡覺");
}
public void study(){
System.out.println(name+"今年"+age+"歲了,要認真學習了");
}
}
剛剛定義好了類,現在讓我們來使用他吧
類的使用需要創建對象
//創建對象的格式
//類的名稱 對象名 = new 類名稱();
//成員變數的使用 對象名.成員變數
//成員方法的使用 對象名.成員方法()
public class AStudent{
public static void main(String[] args){
/*創建Student類對象,對象創建好之後就可以使用類了,也就是說可以
使用對象名去調用類的成員方法,還可以對該類的成員變數賦值*/
Student stu = new Student();
//對成員變數賦值,將右側的劉備賦值交給stu對象當中的name成員變數
stu.name = "劉備";
stu.age = "18";
//調用成員方法
stu.eat();
stu.sleep();
stu.study();
}
}
使用對象類型作為方法的參數
什麼是對象類型,new出來的就是對象類型
public class AStudent{
public static void main(String[] args){
Student one = new Student();
one.age = 18;
one.name = "新垣結衣";
method(one);
}
//以Student類做為參數傳遞,傳遞進來的對象中的方法和變數可以使用param參數名稱來調用
public static void method(Student param) {
System.out.println(param.name);//新垣結衣
System.out.println(param.age);//18
param.study();//新垣結衣今年18歲了,要認真學習了
}
}
使用對象類型作為方法的返回值
public static void main(String[] args){
//返回值類型是一個Student,所以需要Student來接收該返回值
Student two = method();//method()方法的返回值類型是Student;
two.study();
}
public static Student method() {
Student one = new Student();
one.name="曹操";
one.age = 90;
return one;
局部變數與成員變數的不同
定義的位置不一樣
局部變數:在方法的內部
成員變數:在方法的外部,直接寫在類當中
作用範圍不一樣
局部變數:只有方法當中才可以使用,出了方法就不能再用
成員變數:整個類都可以通用
預設值不一樣
局部變數:沒有預設值,如果想使用,必須要手動賦值
成員變數:如果沒有賦值,會有預設值,規則和數組一樣
面向對象的三大特征之封裝性
- 方法就是一種封裝
- 關鍵字private也是一種封裝
封裝就是將一些細節信息隱藏起來,對於外界不可見
private關鍵字一旦用於成員變數,那麼該成員變數就只能夠在本來中訪問,不能再其它類中訪問
public class Student{
String name;
//寫在對age設置private,使他只能夠再本類中訪問
private int age;
public void setAge(int num){
//未來避免年齡傳入進來的不合理加上if判斷語句
//條件為真就把num賦值給age
if(0<num&&num<150){
age = num;
}else{
System.out.println("年齡不合理");
}
}
public int getAge(){
return age;
}
}
現在寫多一個類來間接訪問age;
public class AStudent{
public static void main(String[] args){
//創建了Student對象,就可以使用她的變數和方法了
Student one = new Student();
//調用了方法setAge.傳遞了參數
one.setAge(18);//int age = 18;
//設置了private的要通過setAge來訪問,沒有設置private的可以直接對象名.成員變數來訪問
System.out.println(one.name+" "+one.getAge());
}
}
構造方法
構造方法是專門用來創建對象的方法,當我們通過關鍵字new來創建對象是,其實就是再調用構造方法,構造方法的名稱必須和所在類的名稱完全一樣,構造方法不要寫返回值類型。
如果沒有編寫任何構造方法,那麼編譯器將會預設贈送一個構造方法,沒有參數,沒有方法體。
一旦自己編寫了構造方法,那麼編譯器將不會給你贈送構造方法
格式:
public 類名稱(參數類型 參數名稱){方法體}
public class Student{
public Student(//我是參數){
System.out.println("構造方法被調用了");//我是方法體
}
}
//new 對象就是在調用構造方法
public class AStudent{
public static void main(String[] args){
//構造方法new對象的時候就被執行
Student stu = new Student();//創建Student對象,就是在調用Student的構造方法
//運行程式將會得到 構造方法被調用了
}
}
定義一個標準類
//new 對象就是在調用構造方法
public class AStudent{
public static void main(String[] args) {
Student one = new Student();
one.setAge(20);
one.setName("孫權");
System.out.println("姓名--"+one.getName()+" 年齡--"+one.getAge());
Student two = new Student("曹操",30);
System.out.println("姓名--"+two.getName()+" 年齡--"+two.getAge());
}
}