Java学习笔记(2)——有关类

Java类的高级特性:

{Java管理文件机制:类包。

同一个包中的类互相访问时,可以不指定包名。

同一个包中的类不必存放在同一位置,如com.lang.class1和com.lang.class2可以分别放在不同盘中,只要将CLASSPATH分别指向两个位置即可。

Java包的命名规则是全部小写字母。}

 

  1.内部类

    如果在外部类和非静态方法之外实例化内部类对象,需要使用外部类.内部类的形式指定该对象的类型!

例:

1 public static void main(String args[]){
2         
3         OutClass out = new OutClass();
4         OutClass.inClass in0 = new out.doIt();
5         OutClass.inClass in1 = new out.inClass();
6 }        

    内部类对象会依赖于外部类对象,除非已经存在一个外部类对象,否则类中不会出现内部类对象!

    内部类不能被声明为private或protected访问类型。

 

    使用this关键字获取内部类与外部类的引用:

public class Test{
    private int x;
    private class Inner{
        private int x=9;
        public void doit(int x) {
            x++;                //形参x
            this.x++;            //内部变量x
            Test.this.x++;        //外部变量x
        }
    }
}

 

内部类对象与外部类对象在内存中的分布情况如图👇

 

 

匿名内部类:

interface intface0{
    
}

class OutClass{
    public intface0 doit(){            //定义doit方法
        return new intface0(){        //声明匿名内部类
            private int i=0;
            public int input() {
                return i;
            }
        };    
    }
}

 

实质上这种内部类的作用就是创建一个实现鱼intface0接口的匿名类的对象。

匿名类格式:

return new class_name(){
            ......//内部类体
        };    

 

posted @ 2020-03-17 21:09  菠菜面筋  阅读(146)  评论(0编辑  收藏  举报