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(); } }
二、成员内部类
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(); } }
三、源码:
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.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料