Java 四种内部类实例
来源:互联网 发布:matlab设置空矩阵大小 编辑:程序博客网 时间:2024/06/08 02:34
内部类:成员内部类、静态内部类、局部内部类和匿名内部类。
- 成员内部类
package com.jiaoyinbrother.test;/* * 成员内部类可以调用外部类的所有成员,但只有在创建了外部类的对象后,才能调用外部的成员。 */public class OuterClass { private static String charSet = "UTF-8"; private String name = "zhangsan"; public InnerClass innerClass = new InnerClass(); public void show() { innerClass.print(); } public void display() {// 非静态方法可以直接创建内部类对象 InnerClass innerClass = new InnerClass(); innerClass.print(); } public static void display1() {// 静态方法必须先创建外部类,然后才能创建内部类 InnerClass innerClass = new OuterClass().new InnerClass(); innerClass.print(); } // 成员内部类 public class InnerClass { public void print() { System.out.println("-----------inner class----------"); System.out.println(name); System.out.println(charSet); } } public static void main(String[] args) { OuterClass outerClass = new OuterClass(); outerClass.show(); outerClass.display(); outerClass.innerClass.print(); }}
- 静态内部类
package com.jiaoyinbrother.test;/* * 静态内部类虽然是外部类的成员,但是在未创建外部类的对象的情况下,可以直接创建静态内部类的对象。 * 静态内部类可以引用外部类的静态成员变量和静态方法,但不能引用外部类的普通成员。 */public class OuterClass1 { private static String charSet = "UTF-8"; private String name = "zhangsan"; public InnerClass innerClass = new InnerClass(); public void show() { innerClass.print(); } public void display() { InnerClass innerClass = new InnerClass(); innerClass.print(); } // 无需外部类对象,直接创建静态内部类对象 public static void display1() { InnerClass innerClass = new InnerClass(); innerClass.print(); } // 静态内部类 public static class InnerClass { public void print() { System.out.println("-----------static inner class----------"); System.out.println(charSet); // System.out.println(name);//编译失败,不能引用非静态成员变量 } } public static void main(String[] args) { OuterClass1 outerClass = new OuterClass1(); outerClass.show(); outerClass.display(); outerClass.innerClass.print(); InnerClass innerClass = new InnerClass(); innerClass.print(); }}
- 局部内部类
package com.jiaoyinbrother.test;/* * 局部内部类只能在方法内部中使用,一旦方法执行完毕,局部内部类就会从内存中删除。 * 必须注意:如果局部内部类中要使用他所在方法中的局部变量,那么就需要将这个局部变量定义为final的。 */public class OuterClass2 { private static String charSet = "UTF-8"; private String name = "zhangsan"; public void show() { final int i = 1; class InnerClass {// 修饰符只能为final或者abstract public void print() { System.out.println(charSet); System.out.println(name); System.out.println(i);// 局部变量必须为final } } InnerClass innerClass = new InnerClass();// 只能在声明后创建对象 innerClass.print(); } public static void main(String[] args) { OuterClass2 outerClass = new OuterClass2(); outerClass.show(); }}
- 匿名内部类
package com.jiaoyinbrother.test;/* * 匿名内部类的主体,大括号中是匿名内部类的主体,这个主体就是类或者接口的实现, * 如果是类,那么匿名内部类是该类的子类,如果是接口,匿名内部类需要完成接口的实现。 */public class OuterClass3 { public void show(InnerClass innerClass) { innerClass.print(); } public static void main(String[] args) { OuterClass3 outerClass = new OuterClass3(); outerClass.show(new InnerClass() { @Override public void print() { System.out.println("匿名内部类"); } }); }}abstract class InnerClass { public abstract void print();}
阅读全文
0 0
- Java 四种内部类实例
- Java内部类实例
- Java实例化内部类
- Java 实例内部类 总结
- Java静态内部类实例
- java内部类实例化
- Java 创建内部类实例
- 【java】匿名内部类实例
- 创建Java内部类实例
- Java 内部类实例化
- Java内部类实例测试及总结
- java中内部类实例理解
- java 反射实例化内部类
- Java内部类实例测试及总结
- Java中内部类的实例化
- java中内部类实例练习
- java内部类的使用和实例
- java内部类的实例化
- 完美解决在Servlet中出现一个输出中文乱码的问题
- Python Number(数字)
- ll la rwx各代表的数字和权限
- UCC---type.c
- 2017多校五 1006题 hdu 6090 Rikka with Graph 贪心 构造
- Java 四种内部类实例
- Supervisor安装与配置(Linux/Unix进程管理工具)
- git 笔记
- 数据结构实验之求二叉树后序遍历和层次遍历
- 25_LeetCode 82&83. Remove Duplicates from Sorted List(II) (Python详解及实现)
- Centos7(Linux) 系统下的 各种环境部署 之 MySql
- SSM框架学习
- 极简Node教程-七天从小白变大神(二:中间件是核心)
- linux(ubuntu)学习(二)