首页 / JAVA / java - 基础 - 内部类
java - 基础 - 内部类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java - 基础 - 内部类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2318字,纯文字阅读大概需要4分钟。
内容图文
内部类:
java将一个类定义在另一个类的内部
如果一个类A只有在B里用到了,可以把A设为B的内部类
1.成员内部类
在类的内部,和类的成员同级(属性,方法,块)
2.局部内部类
在类的成员内,和局部变量统计(块,方法)
3.匿名内部类
没有类名,一般用来重写接口和抽象类的方法
4.静态内部类
成员静态内部类
package innerClass; public interface interfaceSchool { public void show(); }
package innerClass; public class School{ private String name; public static String location; School(String name){ this.name = name; } public String getName(){ returnthis.name; } publicvoid innerClassTest(){ class localInnerClass{//局部内部类类似于局部变量,一般不会用到,不能用private public等修饰,可以用abstract和final修饰,使用的变量只能用final } } publicclass Student{ //成员内部类public String name; public String schoolName; Student(String name){ Student.this.name = name; schoolName = School.this.name; //可以直接调用外部类的私有属性 } } publicstaticclass StaticStudent{//静态内部类publicstatic String name; publicstatic String location; StaticStudent(String name){ StaticStudent.this.name = name; StaticStudent.this.location = School.location; //静态内部类只能访问静态成员 } } }
package innerClass; import innerClass.School.Student;//不在这里引用的话下面写成School.Student stu1 = sch1.new Student("studentname1");也可以import innerClass.School.StaticStudent;//静态内部类和成员内部类导入方法一样publicclass Test { publicstaticvoid main(String[] args){ //先定义外部类再构造内部类 School sch1 = new School("schoolname1"); Student stu1 = sch1.new Student("studentname1"); //合并成一句 Student stu2 = new School("schoolname2").new Student("studentname2"); System.out.println(stu1.name); System.out.println(stu1.schoolName); System.out.println(stu2.name); System.out.println(stu2.schoolName); //匿名内部类, 通常是接口的子类,开发中可以省略一个类文件,相当于一个子类继承了School,一般用于接口的重写。 interfaceSchool sch3 = new interfaceSchool(){ publicvoid show(){ System.out.println("我是一个匿名类重写的方法"); } }; sch3.show(); //静态内部类的使用 System.out.println("------Static------"); School sch4 = new School("schoolname4"); StaticStudent StaticStu1 = new StaticStudent("StaticStudent1"); //静态内部类可以直接声明 System.out.println(StaticStu1.name); System.out.println(StaticStu1.location); School sch5 = new School("schoolname4"); sch5.location = "bbb"; StaticStudent StaticStu2 = new StaticStudent("StaticStudent2"); System.out.println(StaticStu2.name); System.out.println(StaticStu2.location); System.out.println(StaticStu1.name);//因为属性是静态的,所以共享改变 System.out.println(StaticStu1.location);//因为属性是静态的,所以共享改变 } }
原文:https://www.cnblogs.com/clamp7724/p/11609138.html
内容总结
以上是互联网集市为您收集整理的java - 基础 - 内部类全部内容,希望文章能够帮你解决java - 基础 - 内部类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。