zoukankan      html  css  js  c++  java
  • 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实现 蓝桥杯VIP 算法提高 高精度乘法
    Java实现 蓝桥杯VIP 算法提高 高精度乘法
    Java实现 蓝桥杯VIP 算法提高 高精度乘法
    Java实现 蓝桥杯VIP 算法提高 高精度乘法
    Java实现 蓝桥杯VIP 算法提高 高精度乘法
    Java实现 蓝桥杯VIP 算法提高 现代诗如蚯蚓
    Java实现 蓝桥杯VIP 算法提高 现代诗如蚯蚓
    Java实现 蓝桥杯VIP 算法提高 现代诗如蚯蚓
    Java实现 蓝桥杯VIP 算法提高 现代诗如蚯蚓
    ddd
  • 原文地址:https://www.cnblogs.com/StevenHuSir/p/Java_EternalClass.html
Copyright © 2011-2022 走看看