類是一組相關屬性和行爲的集合,能夠看做是一類事物的模板,好比說:不管中年人、老年人仍是小孩,都有身高、體重(這是屬性),都會吃飯、睡覺(這是行爲),那麼咱們就能夠抽取出這些共有的屬性和行爲,封裝爲一個類。類由兩部分組成:java
對象是某類事物的具體體現,對象是類的一個實例,好比說:一株蒲公英是植物類的具體實例。this
修飾符 class關鍵字 類名{ //成員變量(屬性) //成員方法(行爲) }
public class Student{ String name;//姓名 int age;//年齡 //吃飯 public void eat(){ System.out.println("吃飯"); } }
Student是類名,name和age是成員變量(屬性),定義的方式和聲明普通變量同樣;eat是成員方法(行爲)。spa
類名 對象名=new 類名();
public static void main(String[] args){ //建立Student類實例 Student s=new Student(); //使用成員變量 System.out.println(s.name);//null System.out.println(s.age);//0 //調用eat方法 s.eat(); }
若是沒有對成員變量進行賦值的話,那麼將會使用它們的默認值code
public class Student { int age; float weight; char sex; boolean isMan; String name; public void eat(){ System.out.println("吃飯"); } public static void main(String[] args) { Student s=new Student(); System.out.println(s.age);//0 System.out.println(s.weight);//0.0 System.out.println(s.isMan);//false System.out.println(s.name);//null System.out.println(s.sex=='\u0000');//true } }
局部變量在方法內部定義對象
public class Student { int age; public void say(){ //定義局部變量a int a=1; System.out.println(a); } //形參也是局部變量 public void hel(int a){ System.out.println(a); } }
成員變量定義在類中、方法外blog
局部變量定義在方法中或方法聲明上(形參)接口
做用範圍不一樣生命週期
成員變量做用範圍是整個類內存
局部變量的做用範圍是它所在的方法rem
public class Student { int age; public void say(){ //定義局部變量a int a=1; System.out.println(age); System.out.println(a); } public void hel(){ System.out.println(age); //System.out.println(a); 沒法訪問到a } }
是否有默認值
成員變量有默認值
局部變量沒有默認值,必須定義賦值,而後使用
public void say(){ int a; //System.out.println(a); 未賦值沒法使用 }
成員變量在堆內存
中
局部變量在棧內存
中
成員變量隨着對象的建立而存在,隨着對象的消失而消失
局部變量隨着方法的調用而存在,方法調用完畢它便消失
封裝是指將數據和操做數據的方法綁定起來,對數據的訪問只能經過定義的接口。咱們在類中編寫的方法就是對實現細節的一種封裝;咱們編寫的類就是對數據和數據操做的封裝。
private
修飾符將變量修飾爲私有變量(只有本類中能夠訪問)對外提供公有的能夠訪問私有變量的方法,如getXXX()方法和setXXX()方法
public class Test1 { public static void main(String[] args) { Person p=new Person(); //System.out.println(p.name); 沒法直接訪問 System.out.println(p.getName());//null 只能經過對外提供的接口進行訪問 } } class Person{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
一個.java文件中能夠定義多個類,可是隻能有一個類使用public修飾符
this關鍵字表明正在操做的那個對象,this.name表示該對象的成員變量name,區別於局部變量name
咱們知道,想要使用對象內的東西,必需要先使用new關鍵字建立對象,那麼它是怎麼建立出來的呢?答案就是構造方法,但是咱們的類中沒有定義構造方法啊?雖然沒有定義,可是咱們每一個類都有一個默認值的無參構造方法,咱們在new對象的時候就會調用構造方法。那麼咱們該如何定義本身的構造方法呢?
#### 格式
【修飾符】 類名(【參數列表】){ //代碼 }
#### 注意點
咱們能夠在一個類中定義多個構造方法
public class Test1 { public static void main(String[] args) { //使用無參構造建立對象 Person p1=new Person(); //使用有參構造建立對象 Person p2=new Person("張三"); } } class Person{ private String name; private int age; //無參構造方法 public Person(){ System.out.println("我是無參構造方法"); } //我是有參構造方法 public Person(String name){ System.out.println(name); System.out.println("我是有參構造方法"); } }
執行結果:我是無參構造方法
張三
我是有參構造方法
#### 使用構造實現封裝
前面經過編寫setXXX
方法和getXXX
方法以及私有化成員變量實現封裝,這裏咱們經過構造方法實現封裝
class Person{ private String name; private int age; //無參構造方法 public Person(){ System.out.println("我是無參構造方法"); } //我是有參構造方法 public Person(String name,int age){ System.out.println("我是有參構造"); this.name=name; this.age=age; } } public class Test1 { public static void main(String[] args) { //使用無參構造建立對象 Person p1=new Person(); //使用有參構造建立對象 Person p2=new Person("張三",23); } }
咱們沒法訪問對象的成員變量(屬性),只能經過構造進行訪問
JavaBean是java語言編寫類的一種
標準規範,符合
JavaBean`的類必需要知足如下條件:
類必須是具體和公開的(使用public修飾)
必需要有操做成員變量的setXXX
方法和getXXX
方法
class Person{ private String name; private int age; //無參構造方法 public Person(){ System.out.println("我是無參構造方法"); } //我是有參構造方法 public Person(String name,int age){ System.out.println("我是有參構造"); this.name=name; this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
感謝你看到這裏,文章有什麼不足還請指正,以爲文章對你有幫助的話記得給我點個贊,天天都會分享java相關技術文章或行業資訊,歡迎你們關注和轉發文章!