创建内部类

//创建内外类
public class createinner191 {
    public static void main(String []args)
    {
         outclass o=new outclass();
         o.ship("我爱你");

         outclass o1=new outclass();
         outclass.inner1 i1=o1.showinner1();//生成内部类对象可以通过外部类里的方法返回一个new 内部类对象,然后再生成一个引用即可
         System.out.println(i1.getinner1());

         outclass.inner2 i2=o1.showinner2("我喜欢你");
        System.out.println(i2.getinner2());

        outclass o2=new outclass();
        outclass.inner1 ii1=o2.new inner1();//这里生成内部类对象,运用了.new (等号右边)用法是 外部类对象.new 内部类对象
        System.out.println(ii1.getinner1());


    }
}

class outclass
{
    class inner1
    {
        private int x=1;
        inner1()
        {
            System.out.println("inner1");
        }
        public int getinner1()
        {
            return x;
        }
    }

    class inner2
    {
        String s;
        inner2(String s)
        {
            this.s=s;
            System.out.println("inner2");
        }
        String getinner2()
        {
            return s;
        }
    }

    inner1 showinner1()   //用于生成内部类对象
    {
        return new inner1();
    }

    inner2 showinner2(String s) //用于生成内部类对象
    {
        return new inner2(s);
    }

    public void ship(String s)
    {
        inner1 i1=new inner1();//在外部类方法里边,可以直接生成内部类对象
        inner2 i2=new inner2(s);
        System.out.println(i1.getinner1());
        System.out.println(i2.getinner2());
    }
}


Java中,有两种创建内部类的方式:成员内部类和静态内部类。 成员内部类是定义在外部类中的类,并且它可以访问外围类的所有成员,包括私有成员。成员内部类的格式如下: ``` public class Outer { // 成员内部类 public class Inner { } } ``` 静态内部类是使用static关键字修饰的内部类,它与外围类的实例无关,并且可以直接通过外围类的类名访问。静态内部类的格式如下: ``` public class Outer{ // 静态成员内部类 public static class Inner{ } } ``` 内部类和外部类只是在Java语言层面的一个概念,并不存在于JVM。内部类在编译后会生成一个class文件,并记录着其外部类的一些信息。外部类可以被看做是一个普通的类,它的初始化和普通类一样,会在需要使用到的时候进行初始化。 在上面的代码示例中,我们可以看到内部类InnerClass可以访问外部类OuterClass的私有成员name和age。这是因为内部类可以访问外围类的私有成员,包括私有字段和私有方法,而外围类无法直接访问内部类的成员。 所以,通过创建内部类的方式,我们可以方便地访问外围类的私有成员,并且内部类还可以提供更加封装和灵活的设计方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Java内部类介绍 - 静态内部类和成员内部类](https://blog.csdn.net/m0_71485750/article/details/127217314)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [内部类简介 如何创建内部类(Java)](https://blog.csdn.net/weixin_40757930/article/details/123940128)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值