Java程序设计基础------类与对象(六)

上一篇博客中讲述了Java中的接口,那这篇博客主要讲一下内部类的问题。

所谓的内部类就是类里面定义了类,比如身体和心脏。内部类的分类有成员内部类,局部内部类,局部内部类又包含了匿名内部类。

成员内部类就是对象的成员变量,局部内部类是定义在一个成员方法里的类。

成员内部类:

package demo_practice;

public class Outer {
    int i = 20;

    public void speak(){
        System.out.println("我会说话");
    }
    public class inner{
        int i = 10;
        public void run(){
            System.out.println("我会跑步");
        }
        //如何在访问内部类和外部类中重名的变量
        public void print(){
            System.out.println(i);//内部类
            System.out.println(this.i);//内部类
            System.out.println(Outer.this.i);//外部类
        }
    }
}

调用方式:

package demo_practice;

public class Demoouter {
    public static void main(String[] args) {
        Outer o = new Outer();
        System.out.println(o.i);
        o.speak();
        //成员内部类的创建方式以及调用方式
        Outer.inner i = new Outer().new inner();
        System.out.println(i.i);
        i.run();
        System.out.println("==================");
        i.print();
    }
}

结果为:

注意点:

内用外,随意访问,外用内,需要创建对象

生成两个class文件! 

局部内部类: 

调用方式:

public class Demoouter1 {
    public static void main(String[] args) {
        Outer1 o = new Outer1();
        o.outerMethod();
    }
}

 结果:

注意点:对于修饰符来说

外部类:public 或者 不写 

成员内部类:public protect 不写 private 

局部内部类:什么都不写 

匿名内部类:

 匿名内部类继承一个类或者是实现一个接口不需要用extends和implement关键字,匿名内部类不能同时实现一个接口有继承一个类,匿名内部类前不能有修饰符,也不能定义构造方法,因为他没有名字,因此在创建对象的时候不能带参数,因为默认的构造方法没有参数。

内部类和外部类的使用方式?

在外部类中,通过一个内部类的引用对象引用内部类的成员,同时在内部类中也可以直接访问到外部类的成员,内部类也可以创建也可以通过创建对象从外部类之外被调用,但是必须将内部类声明为public。

怎样使用匿名内部类的对象?

匿名内部类是指可以利用内部类创建没有名称的对象,他进一步完成了声明内部类和创建该类的一个对象,并利用该对象访问到里面的成员,这种类不取名字,而是直接利用其父类的名字或者时接口的名字,而且匿名内部类的定义与创建该类的一个实例对对象同时进行。

这篇博客就说到这吧!有兴趣的一起交流啊! 

猜你喜欢

转载自blog.csdn.net/yanzhiguo98/article/details/88776443