java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java内部类

Java超全面梳理内部类的使用

作者:orangemilk_

说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟

一、内部类

1.内部类的概念

内部类是定义在类中的类。

内部类把逻辑上相关的类放在一起。而有的内部类不会在其他地方用到,它没有类名,在定义的时候就生成一个该类的实例,称为匿名内部类。匿名内部类是一种特殊的内部类。

当然啦!可以把内部类看作外部类的一个成员,它拥有自己的成员变量和成员方法。通过实例化对象可以访问其成员变量或调用成员方法。

2.内部类的定义

把类的定义放在一个用于封装它的类的内部。

3.内部类与外部类的访问规则

在外部类中,通过一个内部类对象引用内部类中的成员,同样啦!在内部类中也可以直接引用它的外部类的成员,内部类也可以通过创建对象从外部类之外被调用,但必须在内部声明为public。

原理:

在内部类对象中保存了一个对外部类对象的引用,当在内部类的成员方法中访问某一变量时,如果在该方法和内部类中都没有定义这个变量,调用就会被传递给内部类保存的那个对外部类的引用,通过这个外部类对象的引用去调用这个变量。

//filename:Group.java
public class Group{
    private int age;
    public class Student{
        String name;
        public Student(String n,int a){
            name=n;
            age=a;
        }
        public void show(){
            System.out.print("姓名:"+this.name+"年龄:"+age);
        }
    }
    public void show(){
        Student stu=new Student("张三 ",18);
        stu.show();
    }
    public static void main(String[] args){
        Group g=new Group();
        g.show();
    }
}
//姓名:张三 年龄:18

4.内部类的注意事项

二、匿名内部类

是指可以利用内部类创建没有名字的内部类,进一步声明内部类和创建一个该类的对象。

使用方法:

//filename:A_1.java
public class A_1{
    public static void main(String[] args){
        (
                new Inner(){
                    void setName(String n){
                        name=n;
                        System.out.print("姓名:"+name);
                    }
                }
                ).setName("张 三");
    }
    static class Inner{
        String name;
    }
}
//姓名:张 三

思路:

到此这篇关于Java超全面梳理内部类的使用的文章就介绍到这了,更多相关Java内部类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文