Day04 修饰符&内部类

来源:互联网 发布:图像处理相关算法 编辑:程序博客网 时间:2024/06/07 16:39

* 不同包之间的互相访问

 *      使用类的全名

 *      使用关键字import将类导入

 

权限修饰符

* 权限修饰符:

        public 当前类,相同包下不同的类,不同包下的类

        default 当前类,相同包下不同的类

        private 当前类

        protected 当前类,相同包下不同的类,不同包下的子类

       

        default:当前包下使用

        protected:让子类对象使用


局部变量只能用默认的权限修饰符来修饰.即  int a = 10 ;

 

内部类

* 成员内部类:

 *      在类的成员位置,和成员变量以及成员方法所在的位置是一样的

 *      在内部类当中,可以直接访问外部类的成员,包括私有成员

 

创建成员内部类的办法:

 */第一种方法: Outer.Inner i =newOuter().new Inner();因为创建内部类对象相当于调用外部类的对象的成员,所以前面是new Outer().new

第二种方法:在内部类中写方法创建外部类对象,然后调用内部类方法.

 

 

第一种方法的两种方式:

Outer3.Inner  i  = new Outer3(). new Inner();//方式一

Outer3.Inner2 i2 =new Outer3. Inner2();    //方式二 成员内部类前有static

 

System.out.println(Outer.this.num);   中必须加this是因为这个Outer类中的num非静态

 

 

* 局部内部类

 *      在方法内,出了方法之后就无法使用

并且只能在定义之后才可以使用

* 匿名内部类:

 *      可以把匿名内部类看成是一个没有名字的局部内部类

 *      定义在方法当中

 *      必须在定义匿名内部类的时候创建他的对象

 * 格式:

 *      new/接口(){

 *          如果是创建了继承这个类的子类对象,我们可以重写父类的方法

 *          如果是创建了实现这个接口的子类对象,我们必须要实现该接口的所有方法

 *      };

 * 原理:而是创建了继承这个类的子类对象或者是创建了实现这个接口的子类对象

public static void main(String[] args) {

       Outer b =new Outer();

       b.method();

}

 

interface Inner{

       public abstract void function();

}

class Outer{

       public void method(){

       new Inner(){                       //   匿名内部类使用方式一:     

                     @Override

                     publicvoid function() {

                            System.out.println("function");

                     }

              }.function();

             

              Inner a  = new Inner (){          //  匿名内部类使用方式二:   

                     @Override

                     publicvoid function() {

                            System.out.println("function2");

                     }

              };

a.      function();

a.      function();

       }

}