Java内部类

目录

非静态内部类 

 静态内部类

匿名内部类 


Java的内部类,就是在一个类的内部再写一个类,在一般写程序的时候每个类都是相互独立的,但是有了内部类,就打破了这种关系。

非静态内部类 

        其定义很简单,就是把内部类看作是外部类的一个成员变量或者方法来使用。必须依赖于外部类的对象才能调用,用法和成员变量成员方法一致的。那为什么要使用内部类?答案是可以更好的隐藏细节和结构,封装性会更好。基本的内部类还可以写在一个方法体中。

根据内部类定义的位置不同,一般可以分为以下几种形式:
1. 成员内部类(普通内部类:未被static修饰的成员内部类 和 静态内部类:被static修饰的成员内部类)

2. 局部内部类(不谈修饰符)、匿名内部类
注意:内部类其实日常开发中使用并不是非常多,大家在看一些库中的代码时候可能会遇到的比较多,日常开始中使用最多的是匿名内部类 

package Practice_opp;

public class MyDog {
    //    成员变量
    int age;
    String name;

    public void eatFood() {//成员方法
        System.out.println("吃饼干");
        System.out.println("Mydog 这是我的外部类名字");
    }

    public class Bird {
        private String name;
        int age;

        public void disPlay() {
            System.out.println("这是一个内部类,定义为bird");
            System.out.println(name);
        }

        public Bird() {
            name = "宝宝";
        }
    }

    public static void main(String[] args) {
        MyDog dog = new MyDog();
        dog.eatFood();
        dog.age = 1;
        dog.name = "京京";
        MyDog.Bird bird = dog.new Bird();
        System.out.println(bird.name);

    }

}

 

 

 在方法体中定义内部类

package Practice_opp;

public class MyDog {
    //    成员变量
    int age;
    String name;

    public void dog() {
        class Dog1 {
            public void print() {
                System.out.println("内部类输出了一个小狗");
            }
        }
        Dog1 dog1 = new Dog1();
        dog1.print();
    }

    public static void main(String[] args) {
        MyDog dog1 = new MyDog();
        dog1.dog();

    }

}

 

 静态内部类

        静态内部类不依赖任何对象,类中所有的静态组件都不需要依赖任何对象,可以直接通过类本身来进行构造。

package Practice_opp;

public class MyDog {
    //    成员变量
    int age;
    String name;


    public static class Dog{
    private  String dogn_ame;


     public Dog(String dogn_ame) {
         this.dogn_ame = dogn_ame;
     }

     public  void  display(){
         System.out.println("内部类");
         System.out.println(dogn_ame);
     }
 }

    public static void main(String[] args) {
       MyDog.Dog dog = new Dog("小黄");
       dog.display();

    }
}

 在这段代码中,定义了一个Dog,但这次是一个静态类的,在最后面可以看到他不依赖于其他类,但是为了表示它是一个内部类,还是把MyDog写上表示它是一个子类。

匿名内部类 

         这主要是和接口有关,在以后的学习中我会更新。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值