Java内部类

package Test0614;

public class OuterClassTest {
    public static void main(String[] args) {
        //1.创造Person的静态的成员内部类的实例
        person02.Dog dog = new person02.Dog();
        dog.eat();
        //2。床建Person的非静态的成员内部类的实例

        person02 p1 = new person02();
        person02.Bird bird = p1.new Bird();
        bird.eat();
    }
}
class person02{//外部类

    //静态的成员内部类
    static class Dog{

        public void eat(){
            System.out.println("狗吃骨头");
        }

    }
    //非静态的
    class Bird{
        public void eat(){
            System.out.println("鸟吃虫子");
        }

    }

    public void method(){//方法
        //局部内部类
        class InnerClass1 {

        }
    }

    public person02() {
        //局部内部类
        class InnerClass1 {

        }
    }

    {//代码块
        //局部内部类
        class InnerClass1{

        }

    }

}

1.什么是内部类

将一个类A定义在另一个类B里面,里面的那个类A就称为内部类 (Innerclass),类B则称为外部类

2.为什么要声明内部类:

具体来说,当一个再物A的内部,还有一个部分需要一个完整的结构B进行描述,而这个内部的完整的结构B又只为外部事物A提供服务,不在其他地方单独使用,那么整个内部的完整结构B最好使用内部类。总的来说,遵循 高内聚 、低合 的面向对象开发原则。

3,内部类使用举例:

Thread类内部声明了State类,表示线程的生命周期

HashMap类中声明了Node类,表示封装的key和value

4,内部类的分类:(参考变量的分类)

        >成员内部类:直接声明在外部类的里面。使用static修饰的,静态的成员内部类

        >不使用static修饰的,非静态的成员内部类

        >局部内部类,声明在方法内器、构造内、代码块内的内部类

        >匿名的局部内部类

        >非匿名的局部内部类

5,内部类这节要讲的知识:

        >成员内部类的理解

        >如何创建成员内部类的实例

        >如何在成员内部类中调用外部类的结构

        >局部内部类的基本使用

6,关于成员内部类的理解!

        >从类的角度看:

                内部可以声明属性、方法、构造器、代码块、内部类等结构

                此内部类可以声明父类,可以实现接口

                可以使用final修饰

                可以使用abstract修饰

        >从外部类的成员的角度看

                -在内部可以调用外部类的结构。比如:属性、方法等

                除了使用public、缺省权限修饰之外,还可以使用private、protected修饰

                可以使用static修饰

package Test0614;

public class ObjectTest {
    public static void main(String[] args) {
        Subobject s1 = new Subobject();
        s1.test();

        //匿名调用
        new Subobject() {
            public void test(){
                System.out.println("你好");
            }
        }.test();
    }
}
class Subobject extends Object{
    public void test(){
        System.out.println("10010");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值