java 内部类(六)

1.普通代码块,在一个方法中直接用{},就称为普通代码块。
2.构造代码块直接在类中用{},构造块会优先于构造方法执行。new 几次类的时候会执行多次。
3.静态块,使用static声明的代码块,静态块的主要目的是静态属性初始化。static{...}
new 几个次类的时候会执行一次。静态块优先于构造块执行。
4.在屏幕上输出helloworld,但不使用主方法。
public class Test{
    static{
         System.out.println("Hello World!!"): 
         System.exit(1);
    }
}
5.内部类:
class Outer{
 private String name = "HELLO WORLD!!!" ;
 class Inner{
  public void print(){
   System.out.println("name = " + name) ;
  }
 };
 public void fun(){
  new Inner().print() ; // 打印信息
 };
};
public class InnerClassDemo01{
 public static void main(String args[]){
  new Outer().fun() ;
 }
};
//这样程序有点混乱,改进如下:
class Outer{
 private String name = "HELLO WORLD!!!" ;
 public void fun(){
  new Inner(this).print() ; // 打印信息 };
 public String getName(){
  return this.name ;
 }
};
class Inner{
 private Outer out ;
 public Inner(Outer out){
  this.out = out ;
 }
 public void print(){
  System.out.println("name = " + this.out.getName()) ;
 }
};
public class InnerClassDemo02{
 public static void main(String args[]){
  new Outer().fun() ;
 }
};
内部类唯一的好处就是可以方便访问外部类的私有成员,如果要在外部直接使用内部类的实例化对象:
外部类.内部类 内部类对象=外部类实例.new 内部类实例().
class Outer{
 private String name = "HELLO WORLD!!!" ;
 class Inner{
  public void print(){
   System.out.println("name = " + name) ;
  }
 };
};
public class InnerClassDemo03{
 public static void main(String args[]){
  Outer ut = new Outer() ; // 外部类实例
  Outer.Inner in = out.new Inner() ; //实例化内部类对象
  in.print() ;
 }
};
一个内部类如果使用static关键字的话,则内部类将成为外部类。直接可以通过外部类.内部类访问
class Outer{
 private static String name = "HELLO WORLD!!!" ;
 static class Inner{
  public void print(){
   System.out.println("name = " + name) ;
  }
 };
};
public class InnerClassDemo04{
 public static void main(String args[]){
  Outer.Inner in = new Outer.Inner() ; // 实例化内部类对象
  in.print() ;
 }
};
内部类可以在任意的地方使用,在方法中声明:
class Outer{
 private String name = "HELLO WORLD!!!" ;
 public void fun(){
  class Inner{
   public void print(){
    System.out.println("name = " + name) ;
   }
  }
  new Inner().print() ;
 }
};
public class InnerClassDemo05{
 public static void main(String args[]){
  new Outer().fun() ;
 }
};
在方法中定義的內部類,可以直接訪問外部類的各方法成員,但如果訪問方法中的參數,則在參數上要使用final關鍵字申明。
class Outer{
 private String name = "HELLO WORLD!!!" ;
 public void fun(final int temp){
  class Inner{
   public void print(){
    System.out.println("temp = " + temp) ;
    System.out.println("name = " + name) ;
   }
  }
  new Inner().print() ;
 }
};
public class InnerClassDemo06{
 public static void main(String args[]){
  new Outer().fun(30) ;
 }
};

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15127599/viewspace-664908/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15127599/viewspace-664908/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值