日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java学习 第四章 java面向对象(二)

發(fā)布時間:2024/4/17 java 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java学习 第四章 java面向对象(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、封裝性

  1、封裝性產(chǎn)生目的

    保護(hù)某些屬性和方法不被外部所看見。

  2、封裝性的實(shí)現(xiàn)

    ?為屬性和方法進(jìn)行封裝是通過關(guān)鍵字private聲明的;

    ?實(shí)現(xiàn)該屬性的set和get方法,為外部所訪問;

    ?eg: ?Person類

      ?private String name;

      ?public void getName(String name){

         return name;//得到

      }

      ?public void setName(String name){

         this.name = name;//設(shè)置

      }

  創(chuàng)建get和set方法的快捷鍵:鼠標(biāo)右鍵->Source->Generate Getters and Setters... ?選中屬性點(diǎn)擊OK,如下圖:

    ? ??

?

  3、匿名對象

    ?匿名對象就是沒有名字的對象,如果程序中只是用一次該對象,就可以使用匿名對象的方式。

    ?eg: 創(chuàng)建一個Person類,并使用此類:

      ? //匿名對象 new per.tell() 只使用一次

      //正常情況 Person per = new Person(); ?per.tell();

  4、構(gòu)造方法

  (1)格式:訪問修飾符 類名稱(){

          程序語句

       }

  (2)注意:構(gòu)造方法名稱必須與類名一致;構(gòu)造方法沒有返回值;構(gòu)造方法可以有參數(shù);構(gòu)造方法可以重載;

    eg:class People{//實(shí)例化類的時候會自動執(zhí)行構(gòu)造函數(shù)

       // 構(gòu)造方法

       public People(){

         System.out.println("hello");

       }

     ?}

  (3)構(gòu)造方法主要是為類中的屬性初始化;

  (4)每個類在實(shí)例化之后都會調(diào)用構(gòu)造方法,如果沒有構(gòu)造方法,程序在編譯的時候會創(chuàng)建一個無參數(shù)的什么都不做的構(gòu)造方法。

?二、Java面向?qū)ο蠡咎卣?#xff1a;繼承

?   ? ??1、繼承的基本概念:擴(kuò)展父類的功能;

    2、Java中使用extends關(guān)鍵字完成繼承

        class 子類 extends 父類{ }

    3、在java中只允許單繼承,不能繼承多個,可以多層繼承;

    4、子類不能直接訪問負(fù)累的私有成員;

    5、子類對象的實(shí)例化

      ?在子類對象實(shí)例化之前,必須先調(diào)用父類中的構(gòu)造方法,之后調(diào)用子類構(gòu)造方法  

?    

    6、方法的重寫

    在繼承中,也存在著重寫的概念,其實(shí)就是子類定義了和父類同名的方法;

    定義: 方法名稱相同,返回值類型相同,參數(shù)也同。

    可使用super關(guān)鍵字,實(shí)現(xiàn)父類的方法;

    eg:

        

      重寫限制:

      被子類重寫的方法擁有比父類方法更加嚴(yán)格的訪問權(quán)限

      訪問權(quán)限:

      private(作用域:當(dāng)前類) < default(作用域:同一包) < public(作用域:整個項(xiàng)目)?

    7、super關(guān)鍵字:

      強(qiáng)行調(diào)用父類方法的執(zhí)行 

      super不一定在重寫中使用,也可以表示那些方法是從父類中繼承而來的。

    8、java重寫與重載的區(qū)別

三、Java面向?qū)ο?多態(tài)性

1、多態(tài)性的體現(xiàn):

  方法的重載和重寫;

  對象的多態(tài)性;

2、對象的多態(tài)性:

  向上轉(zhuǎn)型:程序會自動完成;父類 父類對象 = 子類實(shí)例

  eg:類B繼承類A: B b = new B(); A a = b;

  向下轉(zhuǎn)型:強(qiáng)制類型轉(zhuǎn)換;子類 子類對象 = (子類)父類實(shí)例

  eg:類B繼承類A:A a = new B(); B b = (B)a;

3、instanceof關(guān)鍵字

  在Java中可以使用instanceof關(guān)鍵字判斷一個對象到底是不是一個類的實(shí)例。

  instanceof ?返回Bool值

  eg: A a = new A();

  System.out.println(a instanceof A); ? true

  System.out.println(a instanceof B); flase

四、Java面向?qū)ο笾幸玫膫鬟f

  1、引用傳遞

   范例:

class Person{

       int age = 10;}public class Demo{public static void main(String args[]){Person p = new Person();p.age = 20;System.out.println(p.age);//結(jié)果為20;tell(p);System.out.println(p.age);//結(jié)果為30;}public static void tell(Person p2){p2.age = 30;}}

?內(nèi)存示例圖:r1改動指向

?

范例2:

       public static void main(String args[]){String str1 = "hello"System.out.println(str1);//結(jié)果為hello;tell(str1);System.out.println(str1);//結(jié)果為hello;}public static void tell(String str2){str2 = "jike";}

  String類型不可改變屬性,內(nèi)存示意圖:

?

五、java面向?qū)ο?抽象類與接口

1、final關(guān)鍵字在java中被稱為完結(jié)器,表示最終的意思。

2、final能聲明類、方法、屬性:

  使用final聲明的類不能被繼承;

  使用final聲明的方法不能被重寫;

  使用final聲明的變量變成常量,常量是不可以被修改的;

  通過final聲明的屬性名字大寫,例如 final String NAME = "xx";

3、抽象類概念:包含一個抽象方法的類就是抽象類;

  抽象方法:聲明而未被實(shí)現(xiàn)的方法,抽象方法必須使用abstract關(guān)鍵字聲明;

  抽象類被子類繼承,子類(如果不是抽象類)必須重寫抽象類中俄的所有抽象方法;

  定義格式:

        abstract class className{

            屬性

            方法

            抽象方法

        } 

      抽象類不能直接實(shí)例化,要通過其子類進(jìn)行實(shí)例化;

      eg: ?

        abstract class Abs{

          private int age;  

          public void tell(){

          }

          public abstract void say();

        }

        class AbsDemo extends Abs{

          public void say(){

          }

        }

        AbsDemo a = new AbsDemo();

    4、接口

     接口是java中最重要的概念,接口可以理解為一種特殊的類,里面全部是由全局變量和公共的抽象方法所組成

     接口的格式

       interface interfaceName{

           全局常量

           抽象方法

?       }

     ? 接口的實(shí)現(xiàn)也是必須通過子類,使用關(guān)鍵字implements,而且接口是可以多實(shí)現(xiàn)的;

     一個類可以同時繼承抽象類和實(shí)現(xiàn)接口;eg class A extends xx implements xx(){}.

     一個接口不能繼承一個抽象類,但是卻可以通過extends關(guān)鍵字同時繼承多個接口,實(shí)現(xiàn)接口的多繼承;

     eg: interface Inter{

         public static final int AGE = 100;

         public abstract void tell(); //public abstract 可省略

        }

       class A implement void Inter{

          public void tell(){

          }

       }

       interface Inter3 extends Inter1,Inter2(){}

       A a = ?new A();

       a.tell();

       System.out.println(Inter.AGE);

六、Java面向?qū)ο笾盒?/span>

    1、認(rèn)識泛型

      ? 泛型是在JDK1.5以后增加的新功能。泛型(Generic)

  泛型可以解決數(shù)據(jù)類型的安全問題,他主要的原理是在聲明的時候通過一個標(biāo)識表示類中某個屬性的類型活著是某個方法的返回值及參數(shù)類型。

格式:

訪問權(quán)限 class 類名稱<泛型,泛型...>{

屬性

方法

}

對象的創(chuàng)建

類名稱<具體類型> 對象名稱 = new 類名稱<具體類型>();

eg:

  class Point<T>{

    private T x;

    public T getX(){

    reutrn x;

    }

    public T setX(T x){

    this.x = x;

    }

  }

  Point<String> p = new Point<String>();

        ?p.setX("經(jīng)度為:100");

2、構(gòu)造方法使用泛型

構(gòu)造方法可以為類中的屬性初始化,那么如果類中的屬性通過泛型指定,而又需要通過構(gòu)造方法設(shè)置屬性內(nèi)容的時候,那么構(gòu)造方法的定義與之前并無不同,不需要像類聲明那樣制定泛型。

eg: class Con<T>{

    private T value;

    public Con(T value){

    this.value = value;

    }

    public T getValue(){

      return value;

    }

    public T setValue(T value){

      this.value = value;

    }

  }

    Con<String> c = new Con<String>("構(gòu)造方法中使用泛型");

3、指定多個泛型,設(shè)置多個泛型直接在<>中添加多個泛型就可以了,中間用逗號隔開。例如<K,T>

4、通配符 :? ? (不論什么類型都可以使用)

5、泛型接口?

在JDK1.5之后,不僅僅可以聲明泛型類,也可以聲明泛型接口,聲明泛型接口和聲明泛型的語法類似,也是在接口名稱后面加上<T>

格式: interface 接口名稱<泛型標(biāo)識>{}

6、泛型方法

  泛型方法中可以定義泛型參數(shù),此時,參數(shù)的類型就是傳入數(shù)據(jù)類型。

  格式:訪問權(quán)限 <泛型標(biāo)識> 泛型標(biāo)識 方法名稱([泛型標(biāo)識 參數(shù)名稱])

  eg:

  public <T>T tell(T t){

    return t;

  }

7、泛型數(shù)組

  泛型數(shù)組和泛型方法搭配使用;

  在使用泛型方法的時候,也可以傳遞或返回一個泛型數(shù)組;

  eg:

  public static <T>void tell(T arr[]){

    for(int i = 0; i < arr.length; i++){

      System.out.println(arr[i]);

    }

  }

  調(diào)用:

  Integer arr[] = {1,2,3,4};

  tell(arr);

參考:極客學(xué)院課程?http://ke.jikexueyuan.com/zhiye/javaweb/

轉(zhuǎn)載于:https://www.cnblogs.com/lulushen/p/8044069.html

總結(jié)

以上是生活随笔為你收集整理的Java学习 第四章 java面向对象(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。