JAVA基礎-10.形參,內部類,許可權修飾符
1:形式引數和返回值的問題(理解)
(1)形式引數:
類名:需要該類的物件
抽象類名:需要該類的子類物件
介面名:需要該介面的實現類物件
(2)返回值型別:
類名:返回的是該類的物件
抽象類名:返回的是該類的子類物件
介面名:返回的是該介面的實現類的物件
(3)鏈式程式設計
物件.方法1().方法2()…….方法n();
這種用法:其實在方法1()呼叫完畢後,應該一個物件; 方法2()呼叫完畢後,應該返回一個物件。 方法n()呼叫完畢後,可能是物件,也可以不是物件。
2:包(理解)
(1)其實就是資料夾
(2)作用:
A:區分同名的類
B:對類進行分類管理
a:按照功能分
b:按照模組分
(3)包的定義(掌握)
package 包名;
多級包用.分開。
(4)注意事項:(掌握)
A:package語句必須在檔案中的第一條有效語句
B:在一個java檔案中,只能有一個package
C:如果沒有package,預設就是無包名
(5)帶包的編譯和執行
A:手動式
B:自動式(掌握)
javac -d . HelloWorld.java
3:導包(掌握)
(1)我們多次使用一個帶包的類,非常的麻煩,這個時候,Java就提供了一個關鍵字import。
(2)格式:
import 包名…類名;
另一種:
import 包名…*;(不建議)
(3)package,import,class的順序
package > import > class
4:許可權修飾符(掌握)
(1)許可權修飾符
本類 同一個包下 不同包下的子類 不同包下的無關類
private Y
預設 Y Y
protected Y Y Y
public Y Y Y Y
(2)這四種許可權修飾符在任意時刻只能出現一種。
public class Demo {}
5:常見的修飾符(理解)
(1)分類:
許可權修飾符:private,預設,protected,public
狀態修飾符:static,final
抽象修飾符:abstract
(2)常見的類及其組成的修飾
類:
預設,public,final,abstract
常用的:public
成員變數:
private,預設,protected,public,static,final
常用的:private
構造方法:
private,預設,protected,public
常用的:public
成員方法:
private,預設,protected,public,static,final,abstract
常用的:public
(3)另外比較常見的:
public static final int X = 10;
public static void show() {}
public final void show() {}
public abstract void show();
6:內部類(理解)
(1)把類定義在另一個類的內部,該類就被稱為內部類。
舉例:把類B定義在類A中,類B就被稱為內部類。
(2)內部類的訪問規則
A:可以直接訪問外部類的成員,包括私有
B:外部類要想訪問內部類成員,必須建立物件
(3)內部類的分類
A:成員內部類
B:區域性內部類
(4)成員內部類 修飾符:
A:private 為了資料的安全性
B:static 為了訪問的方便性
注意:靜態內部類訪問的外部類資料必須用靜態修飾。
成員內部類不是靜態的:
外部類名.內部類名 物件名 = new 外部類名.new 內部類名();
成員內部類是靜態的:
外部類名.內部類名 物件名 = new 外部類名.內部類名();
(5)成員內部類的面試題(填空)
/*
面試題:
要求請填空分別輸出30,20,10。
注意:
1:內部類和外部類沒有繼承關係。
2:通過外部類名限定this物件
Outer.this
*/
class Outer {
public int num = 10;
class Inner {
public int num = 20;
public void show() {
int num = 30;
System.out.println(num);
System.out.println(this.num);
//System.out.println(new Outer().num);
System.out.println(Outer.this.num);
}
}
}
class InnerClassTest {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
oi.show();
}
}
(6)區域性內部類
A:區域性內部類訪問區域性變數必須加final修飾。
B:為什麼呢?
因為區域性變數使用完畢就消失,而堆記憶體的資料並不會立即消失。
所以,堆記憶體還是用該變數,而改變數已經沒有了。
為了讓該值還存在,就加final修飾。
通過反編譯工具我們看到了,加入final後,堆記憶體直接儲存的是值,而不是變數名。
(7)匿名內部類(掌握)
A:是區域性內部類的簡化形式
B:前提
存在一個類或者介面
C:格式:
new 類名或者介面名() {
重寫方法;
}
D:本質:
其實是繼承該類或者實現介面的子類匿名物件
(8)匿名內部類在開發中的使用
我們在開發的時候,會看到抽象類,或者介面作為引數。
而這個時候,我們知道實際需要的是一個子類物件。
如果該方法僅僅呼叫一次,我們就可以使用匿名內部類的格式簡化。
interface Person {
public abstract void study();
}
class PersonDemo {
public void method(Person p) {
p.study();
}
}
class PersonTest {
public static void main(String[] args) {
PersonDemo pd = new PersonDemo();
pd.method(new Person() {
public void study() {
System.out.println("好好學習,天天向上");
}
});
}
}
(9)匿名內部類的面試題(補齊程式碼)
/*
匿名內部類面試題:
按照要求,補齊程式碼
interface Inter { void show(); }
class Outer { //補齊程式碼 }
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
}
}
要求在控制檯輸出”HelloWorld”
*/
interface Inter {
void show();
//public abstract
}
class Outer {
//補齊程式碼
public static Inter method() {
//子類物件 – 子類匿名物件
return new Inter() {
public void show() {
System.out.println(“HelloWorld”);
}
};
}
}
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
/*
1:Outer.method()可以看出method()應該是Outer中的一個靜態方法。
2:Outer.method().show()可以看出method()方法的返回值是一個物件。
又由於介面Inter中有一個show()方法,所以我認為method()方法的返回值型別是一個介面。
*/
}
}
相關推薦
JAVA基礎-10.形參,內部類,許可權修飾符
1:形式引數和返回值的問題(理解) (1)形式引數: 類名:需要該類的物件 抽象類名:需要該類的子類物件 介面名:需要該介面的實現類物件 (2)返回值型別: 類名:返回的
java基礎:熟悉3種內部類的寫法,重點匿名內部類的使用
package methodinner;public class Test { class Duanzanshichangzheng { public void noProblem() { System.out.println("患有急性短暫失常症,開車撞死人沒事"
黑馬程式設計師--java基礎--多型,內部類,異常等
------- android培訓、java培訓、期待與您交流! --------- 多型: 允許不同類的物件對同一訊息作出響應 1.多型的體現 父類的引用指向自己的子類物件 父類的引用也可以接受自己的子類物件 2.多型的前提 類和類之間有關係。繼承。實現。 存在覆蓋。
Java基礎面試:集合、內部類、線程
public 死鎖 exceptio read 多線程 三種 xtend arraylist 表示 package test; import java.util.Hashtable; import java.util.Map; public class test {
java泛型,內部類,列舉型別
(1)泛型 JDK1.5之後增加的新功能,泛型可以解決資料型別的安全性問題,他主要的原理,是在類宣告的時候通過一個標識表示類中某個屬性的型別或者是某個方法的返回值及引數型別。 格式:訪問許可權 class 類名稱<泛型,泛型...>{ 屬性 方法} 泛型方法:訪問許
第10天----類的三大關係,Object,內部類,異常的簡介
* 昨天知識總結: 1.abstract 抽象類 抽象方法 2.interface 比較介面與抽象類 介面可以實現多繼承 抽象類除了抽象方法還可以有普通方法—可以有方法的呼叫 介面的定義 介面的構成 介面的注意點 介面中的新特性—正在jdk1.
Java基礎篇(1)---內部類
一直都在瞎用,也沒有系統整理過,處在會用不會說的階段,現在開始整理資料 內部類,顧名思義它就是在一個類內部繼續定義一個類 //Outer類 public class Outer { private String age; //內部再定義一個Inn
在Java中怎麼定義一個匿名內部類,定義匿名內部類的條件是什麼?
一.匿名內部類: 1.匿名內部類其實就是內部類的簡寫格式。 2.定義匿名內部類的前提:內部類必須是繼承一個抽象類或者實現介面。只要一個類是抽象的或是一個介面,那麼其子類中的方 法都可以使用匿名內部類來實現 3.匿名內部類的格式: new 父類或者介面()
Java基礎8:深入理解內部類
這位大俠,這是我的公眾號:程式設計師江湖。 分享程式設計師面試與技術的那些事。 乾貨滿滿,關注就送。 本文主要介紹了Java內部類的基本原理,使用方法和各種細節。 有關內部類實現回撥,事件驅動和委託機制的文章將在後面釋出。 具體程式碼在我的GitHu
【Java 程式設計】嵌入類,內部類,區域性類,匿名類
文章目錄 1. 嵌入類,內部類 ,外部類 2. 變數的可見性 3. 區域性類 4. 匿名類 5. 避免內部類的序列化 在程式碼中使用嵌入類,能增強程式碼的封裝性和可讀性,讓程式碼更簡潔,有效。 1. 嵌入類
java的多型,instanceof,內部類,介面回撥
1、多型 a、定義:是指允許不同類的物件對同一個訊息作出不同的響應。 即同一個訊息可以根據傳送物件的不同,採取多種不同的行為方式。 (傳送訊息即方法的呼叫) b、多型實現:屬於動態繫結的一種。比如:一個父類去例項化子
thinking in java 多型,介面,內部類,異常小結
多型 1.類內private方法是禁止覆蓋的和繼承的,它預設為final。 在派生類中使用名字最好和基類名字不同 2.類方法中的資料域一般為private,我們呼叫getter它方法來訪問它,setter方法來設定它,如果你直接訪問某個域而不是傳引用,
Javaz中,成員內部類的常見修飾符及應用 && 成員內部類不是靜態的,訪問的格式
pri http col 格式 png log 註意 color 必須 成員內部類的常見修飾符及應用: private 為了保證數據的安全性 static 為了方便訪問數據 註意:靜態的內部類訪問外部類的數據時,外部類的數據必須用靜態修
大資料之scala(二) --- 對映,元組,簡單類,內部類,物件Object,Idea中安裝scala外掛,trait特質[介面],包和包的匯入
一、對映<Map> ----------------------------------------------------- 1.建立一個不可變的對映Map<k,v> ==> Map(k -> v) scala> val map
Java 知識點整理-4.面向物件(包、許可權修飾符、內部類1~38)+ 面向物件一點補充
1、包package的概述:Ⅰ.將位元組碼(.class)進行分類存放。 Ⅱ.包其實就是資料夾。 2、包的命名:域名倒著寫。 3、定義包的格式:package 包名; 多級包用.分開即可。 4、定義包的注意事項:ⅰ.package語句必須是程式的第一條可執行的程式碼。ⅱ.pac
外部類,內部類,匿名內部類詳解!
外部類: 最普通的,我們平時見到的那種類,就是在一個字尾為.java的檔案中, 直接定義的類,比如 public class Student { private String name; private int age; } 內部類: 內部類,顧名思義,就是包含
Kotlin程式設計之巢狀類,內部類,匿名內部類
Kotlin程式設計相關知識點介紹: 和Java程式設計類似,在Kotlin程式設計也有巢狀類和內部類,及匿名內部類。 開始編寫一個案例,來了解這三者,程式碼如下: package com
java基礎個人筆記之抽象類,介面與多型,內部類
抽象類: 抽象:籠統,模糊,看不懂!不具體。 特點: 1,方法只有宣告沒有實現時,該方法就是抽象方法,需要被abstract修飾。 抽象方法必須定義在抽象類中。該類必須也被abstract修飾。 2,抽象類不可以被例項化。為什麼?因為呼叫抽象方法沒意義。 3,抽象類必須有其子類覆蓋了所有
JAVA基礎之類抽象類,介面,內部類
1.抽象類 抽象類往往用來表達對問題的抽象。 定義抽象類應該注意: (1)abstract是定義抽象類的關鍵字,放在class的前面。 (2)abstract在方法中宣告,則該方法則是抽象的方法,抽象方法是沒有方法體的,即為實現。 (3)一個抽象類可以可以包含多個抽象方法,也
JavaSE8基礎 多線程 匿名內部類既重寫Thread中run,又實現Runnable中run
run compile 去掉 思考 release mpi window generate fix 禮悟: 好好學習多思考,尊師重道存感恩。葉見尋根三返一,活水清源藏於零。 虛懷若谷良心主,皓月當空自在王。願給最苦行無悔,誠勸且行且珍