Java語言基礎之內部類
阿新 • • 發佈:2018-12-26
內部類就是在類的內部再定義一個類,優點就是可以呼叫外部類的方法和私有變數
內部類分為靜態內部類(靜態繫結),匿名內部類,以及區域性內部類。
靜態內部類:在類中被static修飾的內部類
匿名內部類:不常用 如果只使用一次,可以寫成匿名內部類
區域性內部類:在方法中定義的類叫做區域性內部類,在方法中可以new 多次
Outer類中定義內部類Inner,以及靜態內部類Inner2
package Com; public class Outer { private String name; //內部類在普通方法呼叫方式 public void show() { System.out.println(name); System.out.println("Outer .... show"); //第一種方式 在類的內部呼叫不需要建立外部物件(當前外部物件Outer()物件已經有了) Inner inner = new Inner(); //第二種方式 建立外部物件Outer(),再呼叫外部物件的內部類物件Inner() Outer.Inner inner2 = new Outer().new Inner(); } //內部類在靜態方法中的呼叫方式 public static void staFun() { // 靜態方法不產生類的物件,是在編譯期放入記憶體的,靜態方法屬於類不屬於物件 //Inner inner = new Inner(); //在靜態方法中,必須建立外部物件,才能呼叫內部類 Outer.Inner inner2 = new Outer().new Inner(); } //普通內部類 class Inner{ int age; public void go() { System.out.println("innner....go"); } } //靜態內部類 static class InnerSta{ public void go2() { System.out.println("InnerSta ...go"); } } }
main:
package Com; import Com.Outer.InnerSta; public class main { /** * @param args */ public static void main(String[] args) { // 普通內部類 需要先建立外部物件Outer,再建立內部物件Inner Outer.Inner inner = new Outer().new Inner(); inner.go(); // 靜態內部類 內部類屬於外部類,直接用類名呼叫內部類即可建立物件 InnerSta inner2 = new Outer.InnerSta(); inner2.go2(); } }
內部類中使用介面和抽象類:
package Com;
public class Java3 {
public void show()
{
}
//內部類是介面
interface Inner{
void in();
}
//內部類是抽象類
abstract class B{
}
//繼承內部類抽象類,實現內部類介面
class A extends B implements Inner{
@Override
public void in()
{
}
}
}