栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java内部类详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java内部类详解

大家好,今天来分享一下Java内部类,所谓内部类就是在一个类的内部再定义一个类,比如,A类当中定义一个B类,这样的话,B类相对于A类而言,就是内部类,而A类相对于B类来说就是外部类

拿A 与B 来举例

class A {   // 外部类
    // ...
    class B { // 嵌套类,或称为内部类
        // ...
    }
}
// 这是代码实例


Java内部类的语法格式:

class OuterClass {   // 外部类
    // ...
    class NestedClass { // 嵌套类,或称为内部类
        // ...    这个其实和上面那个没有区别,只是它的两个类名拥有见名知意
        
    }
}

静态内部类可以使用 static 关键字定义,静态内部类我们不需要创建外部类来访问,可以直接访问它:

它包含了
1.成员内部类
2.静态内部类
3.局部内部类
4.匿名内部类

上代码实例

创建Outer类

package Deno011;

public class Outer {

   private int id;
   public void out(){
       System.out.println("这是外部类的方法");
   }
   public  class Inner {
       public void in(){
           System.out.println("这是内部类的方法");
       }
    }
}

我们再写一个测试类

package Deno011;

public class Application {
    public static void main(String[] args) {
        Outer outer =new Outer();
        //通过这个外部类实例化内部类
        Outer.Inner inner=outer.new Inner();
        inner.in();

    }
}

看运行结果:

1.在下面的代码块当中,写一个方法

2.我们 指定的属性私有化

3.之后在测试类当中进行调用。

package Deno011;

public class Outer {

   private int id=10;     //将属性私有化,赋值为10
   public void out(){
       System.out.println("这是外部类的方法");
   }
    class Inner {
       public void in(){
           System.out.println("这是内部类的方法");
       }

       public void getID(){   //获取外部类的私有属性
       (还有私有的方法也是可以的)

           System.out.println(id);
       }
    }
}

在测试类当中调用获取来的私有化属性数据

package Deno011;

public class Application {
    public static void main(String[] args) {
        Outer outer =new Outer();
        //通过这个外部类实例化内部类
        Outer.Inner inner=outer.new Inner();
        inner.in();
        inner.getID(); //调用

    }
}
package Deno011;

public class Outer {
    public void  method(){

    class  Inner{     //局部内部类
        public  void in() {
        }
       }
    }
}

测试类改成这样

package Deno011;

public class Application {
    public static void main(String[] args) {
        Outer outer =new Outer();
        //通过这个外部类实例化内部类


    }
}

下面是匿名内部类package Deno011;

public class Test {
    public static void main(String[] args) {
        //没有名字,初始化类,不用将实例保存到变量当中

        //匿名内部类
        

        new  Apple().eat();
    new  UserService(){
        @Override
        public void hello() {

        }



    };

         }

}
class  Apple{
    public  void  eat(){
        System.out.println(1);     //输出
    }
}
interface   UserService {     //定义接口
    void hello();      //写方法
}

输出结果

注意: 这个输出结果并不重要
重点 在于这段代码当中,接口的定义和应用以及内部类的结构

注意:在一个java程序当中,可以有很多个class类,但是只可以有一个public class

好了,关于Java内部类就到这里了,谢谢大家

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711553.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号