this、代码块、内部类

来源:互联网 发布:seo外链推广 编辑:程序博客网 时间:2024/06/05 20:43

this关键字

this在java中表示出以下的概念:

         ·调用类中的属性:this.属性

         ·调用类中的方法:this.方法

         ·调用类中的构造方法:this()

         ·表示当前对象:this


父类没有默认构造函数的话,子类必须显示地用super方法调用父类带有参数的构造函数,

如果父类有默认的构造函数,则子类在编译是自动加上了super()

 

private 属性不能被外部直接访问,只能在内部可见,利用这样的特点,我们设计出了单例模式

public class Single {

         private  static Single instance=new Single();                                                    

         private Single(){

       }

       public static Single getSingle(){

             return instance;

       }

       public void print(){

          System.out.println("s***************");

      }

      public static void main(String[] args) {

           Single.getSingle().print();

       }

}

 注意:static的属性,内存只有一份,被所有的对象恭享一个属性。

Static属性的全局属性,可以由类名称直接访问,static方法不能调用非static属性与方法。

 

代码块:

在Java中使用“{}”括起来的代码称为代码块,根据代码块的定义位置不同,分为四种:

         ·普通代码块:{}位于方法内

         ·构造块:{}位于类中 (构造块优先于构造方法执行,每次new的时候都会执行

         ·静态块:使用static关键字声明的代码块,主要的是用来为静态属性初始化。(静态块优先于住方法执行,优先于构造块执行,只执行一次)

         ·同步块:sychronized声明加上{}的块。

public class CodeDemo01 {

    {

       System.out.println("********构造态块********");

    }

    public CodeDemo01(){

       System.out.println("*******构造方法********");

    }

    static{

       System.out.println("***********静态块**********");                                                                         

    }

    public static void main(String[] args) {

       new CodeDemo01();

       new CodeDemo01();

       {

           System.out.println("*******这是普通代码快*******");

       }

    }

}

/***********静态块**********

********构造态块********

*******构造方法********

********构造态块********

*******构造方法********

*******这是普通代码快*******/


内部类:内部类的唯一优点:可以方便访问外部类的私有属性;

public class Outer {

    private String name="jtlyuan";

    class Inner{

       public void print(){

           System.out.println("name="+name);//访问了Outer的私有属性name                                             

       }

    }

    public static void main(String[] args){

       Outer o = new Outer();

       Outer.Inner i = o.new Inner();//定义内部类的格式

       i.print();

    }

}

如果内部类使用了static关键字,则表示外部类,可以通过Outer.Inner in =new Outer.Inner();定义,内部类可以放在类中,也可以放在方法中。但是内部类定义在方法中,方法中的形参要用final修饰。

原创粉丝点击