JAVA--基礎前言開發

Day06【java基礎類與對象、封裝、構造方法】

1.1成員變量和局部變量

1成員變量: 也稱爲全局變量(屬性)。java

a變量根據定義的位置不一樣,分爲全局變量(成員)和局部變量。安全

  1. 全局變量:定義在類中,任何方法的外面。
  2. 局部變量: 定義在方法中或者方法的參數(形參),以及謀個代碼塊中。

b做用的範圍不同jvm

  1. 成員變量:在整個類中均可以使用。
  2. 局部變量:在方法中或者某個代碼塊中。

c初始值得不一樣this

  1. 成員變量:有默認值得。
  2. 局部變量:沒有默認值,必須初始化了以後纔可使用。

d在內存中的位置不一樣spa

  1. 成員變量:堆內存中。
  2. 局部變量:棧內存中。

e 生命週期的不一樣對象

  1. 成員變量:隨着對象的建立而存在,隨着對象的消失而消失。
  2. 局部變量:隨着方法的調用而存在,隨着方法的調用完畢而消失。

區分變量的做用域:能夠根據,離它最近的大括號以及匹配的結束大括號,其實就是這個變 生命週期

量的活動區域。內存

【第三章】封裝

封裝:能夠認爲是一個保護屏障,防止該類的代碼和數據被其餘的類隨意訪問。要訪問該類的數據,必須經過指定的方式,適當的封裝可讓代碼等容易理解和維護,也增強的代碼的安全性。ci

封裝:就是對抽取出來的數據進行包裝。他的目的:就是提升數據的安全性。作用域

封裝包括兩個方面的封裝: a、(特徵)屬性的封裝 b、(行爲)方法的封裝。

可是封裝起來的數據並非絕對的封裝,若是有其餘的程序須要訪問,能夠經過指定的入口來訪問。屬性的封裝和方法的封裝是相輔相成的二者密不可分。

原則:將成員屬性隱藏起來,若須要訪問某個屬性,能夠提供公共的方法對其訪問。

1.2 類之間方法和屬性的相互調用

public class TestA {

    String  name;

    int  age;

    String address;

    public  void  displayA(){

        System.out.println("這個TestA中的display方法");

    }

    public static void main(String[] args) {

       //建立TestB的對象

        TestB testB=new TestB();

        testB.stuName="王智雅";

        testB.stuAge="22";

        testB.stuXueli="大學";

        testB.display();

        System.out.println(testB.stuName);

        System.out.println(testB.stuAge);

        System.out.println(testB.stuXueli);

    }

}

public class TestB {

    String stuName;

    String stuAge;

    String stuXueli;

    public  void display(){

        System.out.println("這是TestB中的display方法");

    }

 

    public static void main(String[] args) {

        //建立TestA中的對象

        TestA  testA=new TestA();

        testA.name="楊路華";

        testA.age=23;

        testA.address="河南";

        testA.displayA();

        System.out.println(testA.name);

        System.out.println(testA.age);

        System.out.println(testA.address);

    }

}

 

1.3封裝的操做步驟:

1.3.1使用private關鍵字來修飾成員變量

  1. Private 是一個權限修飾符,表明最小權限,只能在當前類中訪問Private修飾的屬性。
  2. Private能夠修飾成員變量和成員方法。
  3. Private修飾的成員變量和成員方法只能在本類中才能訪問。

Private 的使用格式:

  1. 修飾成員屬性 :Private  數據類型  變量名;
  2. 修飾成員方法 :Private  返回值類型  方法名(參數列表);

一、示例,Private 修飾的成員的變量:

Private  String  name;

Private   int  age;

2示例,Private 修飾的成員方法:

Private  String  Message(){}

Private   void  display(int  a,int  b){}

三、代碼示例:

//設置private 來修飾成員變量

public class TestC {

    private String  name;

    private int  age;

    private String address;

//提供公共的set==get方法來設置,獲得屬性的值

    public void setName(String  n){//設置屬性值

        name=n;

    }

    public String getName(){//獲得屬性值

        return name;

    }

    public void  setAge(int a){

        age=a;

    }

    public  int getAge(){

        return age;

    }

    public void setAddress(String ss){

        address=ss;

    }

    public String getAddress(){

        return address;

    }

    public  void  displayA(){

        System.out.println("這個TestA中的display方法");

    }

    public static void main(String[] args) {

        //建立TestB的對象

        TestD testD=new TestD();

        //經過set方法來設置屬性的值

        testD.setStuName("王智雅");

        testD.setStuAge("23");

        testD.setStuXueli("大專");

        testD.display();

        //經過get方法來獲得屬性的值

        System.out.println(testD.getStuName());

        System.out.println(testD.getStuAge());

        System.out.println(testD.getStuXueli());

    }

}

 

 

public class TestD {

    private String stuName;

    private String stuAge;

    private String stuXueli;

    //提供公共的set方法,get方法來獲得屬性的值

    public void setStuName(String Name){

        stuName=Name;

    }

    public  String getStuName(){

        return  stuName;

    }

    public  void setStuAge(String  age){

        stuAge=age;

    }

    public  String  getStuAge(){

        return stuAge;

    }

    public void  setStuXueli(String xueli){

        stuXueli=xueli;

    }

    public  String getStuXueli(){

        return stuXueli;

    }

 

    public  void display(){

        System.out.println("這是TestB中的display方法");

    }

 

    public static void main(String[] args) {

        //建立TestA中的對象

        TestC  testC=new TestC();

        //經過setName來設置屬性的值

        testC.setName("李文傑");

        testC.setAge(23);

        testC.setAddress("蘭州");

        testC.displayA();

        //經過getName來獲得屬性的值

        System.out.println(testC.getName());

        System.out.println(testC.getAge());

        System.out.println(testC.getAddress());

    }

}

 

4.總結:

若是給成員變量設置了私有的Private 屬性以後,若是咱們還想繼續訪問該私有的屬性,則能夠經過公共的方法來

訪問該屬性的值,則能夠經過公共的set方法來給屬性設置值,經過get 方法獲得屬性的值。

1.3.2 構造方法

建立對象的語法:類名 對象名=new 類名();

當建立一個類的對象時,其實就是經過構造方法來建立的。New後面的就是構造方法。

那麼構造方法的定義語法:

[訪問修飾符]  類名(參數表列){

 

}

  1. 構造方法的分析:
  1. 構造方法的方法名必須和類名相同。
  2. 構造方法沒void類型,也不能有返回值。
  3. 構造方法不能被static 關鍵字所修飾。
  1. 構造方法的做用:
  1. 構造方法用來建立對象。
  2. 對成員屬性進行初始化。
  1. 針對構造法方法的第一個做用示例:

 

//構造方法

public class Test3 {

    public Test3(){

        System.out.println("這是Test3中的無參數構造方法");

    }

    public static void main(String[] args) {

      //建立當前類對象

        Test3  t=new Test3();

    }

}

 

解析:也就是說在建立對象的時候,new 後面的就是構造方法。若是有構造方法,則他會執行構造方法中的代碼。

  1. 針對構造方法的第二個做用示例:

//構造方法

public class Test3 {

    String  name;

    String  xueli;

    public Test3(){

        name="張三";

        xueli="本科";

        System.out.println("這是Test3中的無參數構造方法");

    }

    public static void main(String[] args) {

      //建立當前類對象

        Test3  t=new Test3();

        System.out.println(t.name);

        System.out.println(t.xueli);

    }

}

解析:也就是說構造方法也能夠對成員變量進行初始化。

1.3.3  構造方法的分類:

1構造方法的分類:

  1. 有參的構造方法.
  2. 無參的足構造方法(默認的構造方法)。
  1. 無參的構造方法分爲:
  1. 隱式的無參的構造方法
  2. 顯示的無參的構造方法。
  1. 在一個類中,不存在任何形式的構造方法時,jvm就會爲當前類提供一個默認的隱式無參的構造方法。
  2. 那麼顯示無參的構造方法就是程序猿自定義的構造方法。
  3. 當一個類中已經存在了一個構造方法(不管有參仍是無參的),那麼JVM就不會在提供那個隱式無參的構造方法。
  4. 在一個類中能夠提供多個構造方法,只須要參數列表不一樣便可,構造方法能夠進行方法的重載。根據參數列表匹配。
  • 構造方法的示例:

 

//構造方法

public class Test3 {

    String  name;

    String  xueli;

    //構造方法

    public Test3(){

        //對成員屬性進行初始化

        name="張三";

        xueli="本科";

        System.out.println("這是Test3中的無參數構造方法");

    }

    //有參數的構造方法

    public  Test3(String  stuname,String score){

        name=stuname;

        xueli=score;

        System.out.println("======有參數的構造方法=======");

    }

    public static void main(String[] args) {

      //建立當前類對象

        Test3  t=new Test3();

        System.out.println(t.name);

        System.out.println(t.xueli);

 

        //建立對象

        Test3  ss=new Test3("liwenjie","232");

        System.out.println(ss.name);

        System.out.println(ss.xueli);

    }

}

【總結】也就是說在一個類中,經過構造方法來建立對象,經過建立對象來調用構造方法,一個類中能夠有多個構造方法,方法名相同,參數列表不一樣,能夠經過不一樣的參數列表調用不一樣的構造方法。

2若是一個類中只有一個有參的構造的方法,那麼咱們還想經過無參的構造方法來建立對象,那麼jvm也就不提供了。若是咱們必定要用無參的構造方法來建立對象,那麼就須要咱們手動提供一個無參數的構造方法。

  • This關鍵字
  1. 使用this關鍵字的前提條件:
  • This關鍵字只能出如今沒有被static關鍵字修飾的方法中。
  1. This關鍵字的做用:
  • This 關鍵字表示對當前類某個對象的引用,那個對象調用當前的成員方法,this關鍵就表明那個對象
  1. This關鍵字的第一種用法:
  • 當方法中的局部變量或者參數和成員屬性徹底一致時,程序默認採用就近原則,若是想要輸出成員變量的值,就可使用this.屬性名的方式來調用。
  1. This關鍵字的第二種用法:
  • 當this關鍵字以this(參數列表)的形式出如今構造方法的第一句代碼時,就表示當前的構造方法調用了該類中其餘的構造方法。根據參數列表匹配。

This關鍵字的第一種用法示例:

public class Test4 {

    String  name="張三";

 

    public  void display(){

       String  name="李四";

        System.out.println(name);//李四,程序默認採用就近原則輸出李四,

        System.out.println(this.name);// 張三

    }

public static void main(String[] args) {

        Test4   t=new Test4();

        t.name="liwenjie";

        t.display();

    }

}

public class Test4 {

    String  name="張三";

 

    public  void display(){

        String  name="李四";

        System.out.println(this.name);

    }

    public Test4(String  name){

        //若是這樣寫jvm分不清楚到底那個是成員屬性,那個是局部屬性,

        //若是加上this.屬性名的方式,它就表明了調用的必定是當前類成員屬性的值。

       //name=name;

        this.name=name;

    }

    public static void main(String[] args) {

        Test4   t=new Test4("天水市");

        t.display();

    }

}

 

【總結】當成員變量名和方法中的局部變量徹底一致時,程序默認採用就近原則,若是想要輸出成員變量的值,那麼就使用this.屬性名的方式就能夠輸出成員變量的值。This關鍵字就表明當前類的那個對象,輸出的值必定是成員屬性的值。

 

 

This關鍵字第二種用法的示例:

 public class Test5 {

    String name;

    int age;

 

    public Test5(){

        this("zhangsan",23);

        System.out.println("無參數的構造方法");

    }

    public  Test5(String name,int age){

         this.name=name;

         this.age=age;

        System.out.println("有參數的構造方法");

     }

 

    public static void main(String[] args) {

        //建立當前類的對象

        Test5 t=new Test5();

        System.out.println(t.name);

        System.out.println(t.age);

 

    }

}

【總結】當this關鍵字以this(參數列表)的形式出如今構造方法的第一句代碼時,就表示了當前的構造方法調用了該類中其餘的構造方法。根據參數列表匹配。

  • JavaBean

JavaBean是java語言編寫類的一種標準規範,javaBean也是一個類,只不過符合javaBean定義規範的類稱爲javaBean。

定義javaBean的規範

  1. 提供一個公共無參的構造方法。
  2. 全部的成員屬性必須是Private修飾的。
  3. 爲全部的成員屬性提供公共的set,get方法。
  1. Set 方法:是無返回值有參數的,經過set方法給私有的屬性設置值,Set方法的命名規則是SetXxx, 其中Xxx是屬性名,並且屬性的首字母大寫 例如:setName();
  2. Get 方法: 是有返回值無參數的,經過Get方法來獲得私有屬性的值,get方法的命名規則是GetXxx,其中Xxx是屬性名,並且屬性的首字母大寫 例如:getName();

 

//定義JavaBean規範

public class Test6{

    //成員變量必須是Private修飾

   private  String stuname;

   private String stuaddre;

   private String stuXueli;

   private Integer  stuAge;

   //提供一個公共無參的構造方法

    public Test6(){

 

    }

   //獲得屬性的值

    public String getStuname() {

        return stuname;

    }

  //設置屬性的值

    public void setStuname(String stuname) {

        this.stuname=stuname;

    }

 

    public String getStuaddre() {

        return stuaddre;

    }

 

    public void setStuaddre(String stuaddre) {

        this.stuaddre = stuaddre;

    }

 

    public String getStuXueli() {

        return stuXueli;

    }

 

    public void setStuXueli(String stuXueli) {

        this.stuXueli = stuXueli;

    }

 

    public Integer getStuAge() {

        return stuAge;

    }

 

    public void setStuAge(Integer stuAge) {

        this.stuAge = stuAge;

    }

}

public class Test7 {

    public static void main(String[] args) {

        //建立對象

        Test6 t=new Test6();

        t.setStuname("wangzhiya");

        t.setStuaddre("山西省");

        t.setStuXueli("本科");

        t.setStuAge(20);

        System.out.println(t.getStuname());

        System.out.println(t.getStuaddre());

        System.out.println(t.getStuXueli());

        System.out.println(t.getStuAge());

    }

}

相關文章
相關標籤/搜索