七、java基礎之物件
阿新 • • 發佈:2018-12-01
一、面向物件:
/*
1.面向物件可分為三個階段:
OOA:面向物件的分析
OOD:面向物件的設計
OOP:面向物件的程式設計
2.類的定義:
Student是一個類,是一種引用型別
概念上的一個定義,現實世界中不存在
變數前面沒有static的修飾,叫做成員變數
*/
public class Student { //屬性: //學號 int id;//成員變數;例項變數,非靜態變數,成員變數如果沒有手動賦值,系統則預設賦值 //id是物件級別的,必須先有物件才能訪問,不能使用類直接訪問 //姓名 String name; //性別: booleansex; //年齡 int age; //住址 String addr; //方法 }
3.物件如何建立及訪問
public class ClassTest01 { public static void main(String[] args){ //建立物件 //stu1是一個區域性變數,這個區域性變數是Student型別,也就是一個引用型別 //stu1稱作:引用,指向記憶體中的一個地方引用中儲存了物件在堆中的記憶體地址 //通過“引用”去間接訪問堆中的物件 Student stu1=new Student(); //new的意思是在stack中開闢一個空間,這個空間是Student型別 //java中所有的new出來的資料統一儲存在堆區中,程式設計師無法對堆區資料直接訪問,只能通過記憶體地址間接訪問 //一個類可以建立多個物件 Student stu2=new Student(); //使用物件 //訪問成員變數,必須使用“引用.” //name是成員變數,物件相關,必須先有物件才能訪問,必須使用“引用.” //System.out.println(Student.name);//error //讀取 System.out.println(stu1.id);//0 System.out.println(stu1.sex);//false System.out.println(stu1.addr);//null System.out.println(stu1.age);//0 System.out.println(stu1.name);//null /* byte,short,int,long 0 float,double 0.0 boolean false char \u0000 引用資料型別 null */ //賦值 stu1.addr="北京海淀區"; stu1.age=12; stu1.id=1; stu1.name="chu"; stu1.sex=true; // System.out.println(stu1.id); System.out.println("sut1.sex="+(stu1.sex?"男":"女"));//三目運算 System.out.println(stu1.addr); System.out.println(stu1.age); System.out.println(stu1.name); } }
4.面向物件的封裝性
//面向物件的封裝性
//類=屬性+方法
//屬性來源於狀態,方法來源於動作
建立Custom類
//定義一個顧客型別
/*
1.屬性私有化
2.對外提供公開的setter和getter
3.setAge和getAge方法的方法名遵循規範
*/
public class Custom { //屬性 //成員變數,非靜態變數,例項變數 //private修飾的資料只能在本類中訪問 // private int age; int age; //對外提供兩個公開的方法 //set public void setAge(int _age){ //安全性校驗 if(_age<0 || _age>100){ System.out.println("年齡不合法"); return; } age=_age; } //get public int getAge(){ //不帶static成員方法,例項方法,非靜態方法 //成員方法必須使用“引用.”的方式訪問 return age; } }
訪問:
public class ClassTest02 { public static void main(String[] args){ //1.建立Custom型別物件 Custom cus=new Custom(); /* //讀取 System.out.println(cus.age); //3.賦值 cus.age=1; //4.讀取 System.out.println(cus.age); */ //賦值 cus.setAge(-10); //讀取 System.out.println(cus.getAge()); } }