• java随笔


    今天看之前的java基础,发现还有好多不会,感觉补救。

    今天看了类中5大成员属性:内部类

    先说局部内部类,局部内部类就在外部类的方法和代码块中定义

    放一段代码:

    public class InnerClass {
        public static void main(String[] args) {
            Outer02 outer02=new Outer02();
            outer02.test();
        }
    }
    class Outer02{
        public int n1=100;
        public void test(){
            //局部内部类定义在外部类的局部位置,通常在方法
            //可以访问外部类的所有成员,包括私有的
            //不可以添加访问修饰符,但可以使用final修饰
            //作用域在方法体中
            class Inner02{
                int n1=32;
                public void f1(){
                    System.out.println(Outer02.this.n1);//100
                    System.out.println(n1);//32
                }
            }
    
            //外部类通过局部内部类的对象调用其方法
            Inner02 inner02=new Inner02();
            inner02.f1();
        }
    
        {
            class Inner03{
            }
        }
    }
    View Code

    它还有一些细节:比如不能是用修饰符,但可以用final等等

    然后是匿名内部类:

    //匿名内部类
    class Test{
        private int age=10;
        public void metond(){
            //使用匿名内部类,简化开发,可以继承接口或者类
            //在代码底层创建了一个类实现了接口,类名是外部类的名字加上$1
            Teger t0eger=new Teger() {
                @Override
                public void cry() {
                    System.out.println("老虎叫");
                }
            };
            t0eger.cry();
            //
            Person asd=new Person(){
                @Override
                public void asd() {
                    super.asd();
                }
            };
            asd.asd();
        }
    }
    
    interface Teger{
        public void cry();
    }
    
    class Person{
        public void asd(){
            System.out.println("父类");
        }
    }
    View Code

    其实有这种写目的是简化代码,想用时就创建一个。比如这样:

    public class ClassTest {
        public static void main(String[] args) {
            show(new A(){
                @Override
                public void say() {
                    System.out.println("xxxxxx");
                }
            });
        }
        public static void show(A a){
            a.say();
        }
    }
    class A{
        public void say(){};
    }
    View Code
  • 相关阅读:
    Sql与Asp.Net数据类型对应
    EditPlus 使用技巧集萃
    VB.NET and C# Comparison
    测试后行之CodeSmith模板
    ASP.NET需要改进的地方
    LeetCode: Minimum Path Sum
    LeetCode: Merge k Sorted Lists
    LeetCode: Merge Intervals
    LeetCode: Maximum Subarray
    LeetCode: Median of Two Sorted Arrays
  • 原文地址:https://www.cnblogs.com/chenghaixiang/p/16208412.html
Copyright © 2020-2023  润新知