Java-内部类简单使用
Posted 淡然微笑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-内部类简单使用相关的知识,希望对你有一定的参考价值。
一、实例内部类(成员内部类)
1.成员内部类可以等同看做成员变量
2.成员内部类不能有静态声明
3.成员内部类可以访问外部类所有的数据
public class OuterClass { //静态变量 private static String s1 = "Array"; //成员变量 private String s2 = "keke"; //静态方法 private static void m1(){ System.out.println("我是静态方法!"); } //成员方法 private void m2(){ System.out.println("我是成员方法!"); } //成员内部类, 可以访问控制权限的修饰符修饰 //private,public,protected,缺省 class InnerClass { //不能定义静态方法 //public static void m3(){ //} public void m4(){ //静态的 System.out.println(s1); m1(); //成员的 System.out.println(s2); m2(); } } public static void main(String[] args){ //创建外部类对象 OuterClass outerClass = new OuterClass(); InnerClass innerClass = outerClass.new InnerClass(); innerClass.m4(); } }
二、静态内部类:
1.静态内部类可以等同看做静态变量
2.内部类的重要的作用:可以访问外部类中的私有的属性
3.静态内部类可以直接访问外部类的静态数据,无法直接访问成员变量
public class OuterClass { //静态的成员变量 private static String s1 = "Array"; //成员变量 private String s2 = "keke"; //静态方法 private static void m1(){ System.out.println("我是静态方法!"); } //成员方法 private void m2(){ System.out.println("我是成员方法!"); } //成员内部类, 可以访问控制权限的修饰符修饰 //private,public,protected,缺省 static class InnerClass { //不能定义静态方法 public static void m3(){ //静态的 System.out.println(s1); m1(); //无法直接访问成员 //System.out.println(s2); } public void m4(){ //静态的 System.out.println(s1); m1(); } } public static void main(String[] args){ //创建外部类对象 OuterClass.InnerClass.m3(); //执行m4方法 InnerClass innerClass = new OuterClass.InnerClass(); innerClass.m4(); } }
三、匿名内部类 指类没有名字
public class OuterClass { public static void array(UserService u){ u.logout(); } public static void main(String[] args){ //调用array方法 //匿名内部类 new UserServiceIml() array(new UserServiceIml()); } } interface UserService{ //退出系统 void logout(); } class UserServiceIml implements UserService{ public void logout() { System.out.println("系统退出了"); } }
四、异常使用
/*
getMessage 和 printStackTrace
1.取得异常描述信息:getMessage();
2.取得异常的堆栈信息,(比较适合程序调试阶段)printStackTrace();
* */
import java.io.*; public class ExceptionTest { public static void main(String[] args){ try { FileInputStream fileInputStream = new FileInputStream("c:11.text"); }catch (FileNotFoundException e){ e.printStackTrace(); /* //堆栈信息 java.io.FileNotFoundException: c:11.text (No such file or directory) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(FileInputStream.java:195) at java.io.FileInputStream.<init>(FileInputStream.java:138) at java.io.FileInputStream.<init>(FileInputStream.java:93) at ExceptionTest.main(ExceptionTest.java:12) */ String msg = e.getMessage();//异常描述信息 System.out.println(msg);//c:11.text (No such file or directory) } } }
/*
Finally语句块:
1.finally语句块可以直按和try语句块联用try... finally...
2. try... catch.. finally也可以
3.在 Finally中的代码是一定会执行的
finally 句块一定会执行,所以通常在程序中为了保证某资源一定会释放
所以一般在fina11y语句块中释放资源
1.受控异常:就是編译异常
2非受控异常:就是运行时异常
* */
以上是关于Java-内部类简单使用的主要内容,如果未能解决你的问题,请参考以下文章