码迷,mamicode.com
首页 > 编程语言 > 详细

Java-内部类简单使用

时间:2018-09-10 10:57:34      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:otf   int   ted   变量   作用   []   14.   style   apple   

 

一、实例内部类(成员内部类)

  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-内部类简单使用

标签:otf   int   ted   变量   作用   []   14.   style   apple   

原文地址:https://www.cnblogs.com/StevenHuSir/p/Java_EternalClass.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!