一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 對Java的面對對象編程中對象和引用以及內部類的理解

對Java的面對對象編程中對象和引用以及內部類的理解

2020-03-21 12:03jevien JAVA教程

這篇文章主要介紹了對Java的面對對象編程中對象和引用以及內部類的理解,需要的朋友可以參考下

最近利用下班的時候看了看的think in java感覺再看 和第一次看大不一樣
接下來說一下java中對象和引用的關系,以及內部類的概念。
1、java中一切都是對象
 在java中是什么來操作者對象呢?答案是引用,這就好比C或者C++中的指針。
如果用擁有一個引用,那么此時你必須讓其和一個對象關聯在一起,否則這個引用并不會像你想象的那樣任由你的控制,例如你創建了一個String的引用:

?
1
String s ;

而此時并未與任何對象關聯,如果此時你去做一些操作,如調用String的一些方法,肯定是會出現問題,(一些基本類型除外,因為你在定義的時候,它們就會賦予初始值的),所以在使用錢必須和對象進行關聯:

?
1
String s = new String();

或者

?
1
String s = “my name is ajun”;

像這樣就可以了。
2、怎么和對象進行關聯
在java中通常會通過new來創建一個對象,來和引用進行關聯,如:

?
1
String s = new String("my name is ajun");

這樣不僅創建了一個對象和引用s進行關聯,同事也進行初始化,同時我們也可以創建屬于自己的對象類型。
3、存儲位置
(1)堆棧:一般存儲引用和基本類型變量,堆棧主要是通過堆棧指針上下移動來對內存進行分配和釋放。
基本類型變量并不適應于new進行創建,因為其所占的內存較小。
(2)堆:用于存儲java對象,當程序執行new的時候,堆就會分配一個空間給這個對象,記住堆進行內存的分配和釋放是比堆棧進行存儲和釋放內存消耗更多的時間,這就是基本類型變量要存在堆棧中了,因為基本類型變量是用的最頻繁的,頻繁的存儲和釋放內存,在消耗更多的時候,性能可想而知的。
4、內部類
(1)、內部類基礎知識:
一般定義在java類內部的類成為內部類
內部類可以分為:定義在方法體外部的類、定義方法內部的類、靜態內部類(只能定義在方法外部),匿名內部類
說明:
定義在方法外面的類:
類的成員變量(靜態、非靜態)可以訪問,為了保證能夠正確的引用的類的成員變量,所以必須先實例化外部類的對象,才可以實例化內部類的對象
訪問權限可以任何,可以把它看成類的成員變量,這樣理解就好多來了。
定義在方法體內的類;
類的成員變量(靜態、非靜態)可以訪問,為了保證能夠正確的引用的類的成員變量,所以必須先實例化外部類的對象,才可以實例化內部類的對象
訪問權限不可以有,把他看成方法的局部變量就可以了。
靜態內部類:
只能訪問類的靜態成員變量
訪問權限任何
匿名內部類:
類的成員變量(靜態、非靜態)可以訪問,為了保證能夠正確的引用的類的成員變量,所以必須先實例化外部類的對象,才可以實例化內部類的對象
訪問權限不可以有
(2)、內部類的作用
內部類可以很好的隱藏類,一般類不允許有private protect default訪問權限。
內部類可以實現多重繼承,彌補了java不能多繼承的特點
(3)、例子

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package com.ajun.test.innerclass.example;
 
/**
 * 水果內容
 * @author Administrator
 *
 */
public interface Contents {
   String value();
}
 
package com.ajun.test.innerclass.example;
 
/**
 * 水果目的地
 * @author Administrator
 *
 */
public interface Destination {
 
  //目的地
  String readLabel();
}
 
package com.ajun.test.innerclass.example;
 
public class Goods {
 
  private String des="is ruit!!";
   
  //方法外部
  private class Content implements Contents{
    private String name = "apple "+des;
    @Override
    public String value() {
      return name;
    }
  }
   
  //方法外部
  private class GDestination implements Destination{
    private String label ;
    private GDestination(String label){
      this.label= label;
    }
    @Override
    public String readLabel() {
      return label;
    }
  }
   
   
  //匿名內部類
  public Destination getdestination(final String label){
    return new Destination(){
      @Override
      public String readLabel() {
        return label;
      }
    };
  }
   
  public Destination dest(String s){
    return new GDestination(s);
  }
   
  public Contents content(){
    return new Content();
  }
   
  public Destination dest2(String s){
    class GDestination implements Destination{
        private String label;
        private GDestination(String label){
          this.label= label;
        }
        @Override
        public String readLabel() {
          return label;
        }
    }
    return new GDestination(s);
  }
   
}
 
package com.ajun.test.innerclass.example;
 
public class Test {
 
  public static void main(String [] a){
    Goods gs = new Goods();
    Contents c = gs.content();
    Destination d = gs.dest("Beijing");
    System.out.println(c.value());
    System.out.println(d.readLabel());
    Destination d1 = gs.getdestination("Shanghai");
    System.out.println(d1.readLabel());
    System.out.println(gs.dest2("Tianjin").readLabel());
  }
}

其中Content和Gdestination得到了很好的隱藏,外面調用的時候,根本就不知道調用的是具體哪個類,使這個類擁有多繼承的特性。


輸出;

?
1
2
3
4
apple is ruit!!
Beijing
Shanghai
Tianjin

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 私人影院免费观看 | 亚洲午夜小视频 | 日日射视频 | 免费国产午夜高清在线视频 | 小SAO货边洗澡边CAO你动漫 | 男人叼女人的痛爽视频免费 | 97青草香蕉依人在线播放 | 俄罗斯美女尿尿 | 男女男在线精品网站免费观看 | 国产亚洲精品91 | 国产午夜视频在线观看网站 | 996热视频 | 日本一区二区三区久久 | 成年人免费看的视频 | 男人与禽交的方法 | 精品国产在天天线在线麻豆 | 白丝爆动漫羞羞动漫软件 | 欧美久草在线 | 亚洲欧美色综合图小说 | 午夜视频一区二区 | 99精品久久精品一区二区 | 国色天香社区在线 | 91韩国女主播| 成人性爱视频在线观看 | 国产在线看片护士免费视频 | 色老板免费在线观看 | 亚洲国产精品一区二区久久 | 午夜精品免费 | 日本国产一区二区三区 | juliaann厨房大战 | 精品视频入口 | 午夜福利在线观看6080 | 5g影院天天爽爽 | 91插视频| 成人看片免费无限观看视频 | 操爽| 午夜神器18以下不能进免费 | 亚洲AV国产精品无码精 | 亚洲图片一区二区三区 | 四虎网址大全 | 校园纯肉H教室第一次 |