欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java连载58-静态内部类、成员内部类详解

程序员文章站 2023-10-29 10:02:40
一、内部类的分类: (1)静态内部类(2)成员内部类(3)局部内部类(4)匿名内部类 二、静态内部类 1.静态内部类可以等同的看做是静态变量 内部类的重要作用:可以访问外部类中的私有数据 2.静态内部类可以直接访问外部类的静态变量,静态方法,无法直接访问成员变量和成员方法。 package com. ......

一、内部类的分类:

(1)静态内部类(2)成员内部类(3)局部内部类(4)匿名内部类

二、静态内部类

1.静态内部类可以等同的看做是静态变量

内部类的重要作用:可以访问外部类中的私有数据

2.静态内部类可以直接访问外部类的静态变量,静态方法,无法直接访问成员变量和成员方法。

 

package com.bjpowernode.java_learning;

​

public class d58_1_outerclass {

  //静态变量

  static string s1 = "a";

  //成员变量

  private string s2 = "b";

  //静态方法

  private static void m1() {

    system.out.println("static m1 method execute");

  }

  //成员方法

  private void m2() {

    system.out.println("m2 method execute");

  }

 

  //静态内部类

  //可以访问控制权限的修饰符修饰

  //public,protected.private.缺省

  static class innerclass58{

    //静态方法

    public static void m3() {

      m1();

      system.out.println(s1);

     

//      m2();     

//      system.out.println(s2);

     

    }

    //成员方法

    public void m4() {

     

    }

  }

 

  public static void main(string[] args) {

    //执行m3

    d58_1_outerclass.innerclass58.m3();

    //执行m4

    innerclass58 inner = new innerclass58();

    inner.m4();

  }

}

Java连载58-静态内部类、成员内部类详解二、成员内部类

1.成员内部类可以等同的看醉哦成员变量

2.成员内部类中不允许存在静态变量、静态方法、只能有成员变量和成员方法​。

3.成员内部类可以有外部类的成员变量、成员方法、静态变量和静态方法。

4.​注意点:​内部类对象的创建方式:

需要先创建一个外部类的对象,然后利用外部类的对象再来创建内部类的对象​,例如:

 

    d58_2_memberinnerclass d1 = new d58_2_memberinnerclass();

    innerclass58_1 i1 = d1.new innerclass58_1();//外部类对象加点的方式进行创建

i1.m4();

 

 

举一个完整的例子:

 

package com.bjpowernode.java_learning;

​

public class d58_2_memberinnerclass {

  //静态变量

  static string s1 = "a";

  //成员变量

  private string s2 = "b";

 

  //静态方法

  private static void m1() {

    system.out.println("static m1 method execute");

  }

  //成员方法

  private void m2() {

    system.out.println("m2 method execute");

  }

 

  //成员内部类

  //可以访问控制权限的修饰符修饰

  //public,protected.private.缺省

  class innerclass58_1{

    //静态方法编译错误,不能使用这个方法

//    public static void m3() {

//      m1();

//      system.out.println(s1);

//     

//      m2();     

//      system.out.println(s2);

//     

//    }

    //成员方法

    public void m4() {

      m1();

      system.out.println(s1);

     

      m2();     

      system.out.println(s2);

     

   

    }

  }

  public static void main(string[] args) {

    d58_2_memberinnerclass d1 = new d58_2_memberinnerclass();

    innerclass58_1 i1 = d1.new innerclass58_1();

    i1.m4();

  }

}

 

Java连载58-静态内部类、成员内部类详解

三、源码:

d58_1_outerclass.java

d58_2_memberinnerclass.java

地址:

https://github.com/ruigege66/java/blob/master/d58_1_outerclass.java

https://github.com/ruigege66/java/blob/master/d58_2_memberinnerclass.java

2.csdn:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

 Java连载58-静态内部类、成员内部类详解