代码改变世界

JAVA编程思想学习笔记4-chap10-12-斗之气4段

2019-02-16 14:47  剑动情缥缈  阅读(191)  评论(0编辑  收藏  举报

1.内部类:Iterator

2..this生成对外部类的引用

3..new:通过外部类对象创建内部类对象

package com.chengjie;

public class TestInnerClass {
    class Inner {
        String str() {
            return "Inner!";
        }
    }

    public Inner getInner() {
        return new Inner();
    }

    public static void main(String[] args) {
        TestInnerClass tic = new TestInnerClass();
        TestInnerClass.Inner inner = tic.getInner();
        System.out.println(inner.str());
        inner = tic.new Inner();
        System.out.println(inner.str());
    }
}

4.通过内部类返回其接口类型时,可以实现内部的完全隐藏

interface  Base { }

public class TestInnerClass {
    class Inner implements Base{
        String str() {
            return "Inner!";
        }
    }
    public Base getInner() {
        return new Inner();
    }
}

5.通过匿名内部类实现工厂模式

package com.chengjie;

interface Service {
    void method1();
    void method2();
}

interface ServiceFactory {
    Service getService();
}

class ServiceImpl1 implements Service {
    private ServiceImpl1() {}

    @Override
    public void method1() {
        System.out.println("implment1:method1()!");
    }

    @Override
    public void method2() {
        System.out.println("implment1:method2()!");
    }

    public static ServiceFactory sf = new ServiceFactory() {
        @Override
        public Service getService() {
            return new ServiceImpl1();
        }
    };
}

public class TestFactory {
    public static void consume(ServiceFactory sf) {
        Service s = sf.getService();
        s.method1();
        s.method2();
    }

    public static void main(String[] args) {
        consume(ServiceImpl1.sf);
    }
}

6.内部类特点:每个内部类可以独立继承一个接口的实现,无论外围类继承与否--有效补充了多重继承

7.内部类不是is-a,而是独立的实体

8.嵌套类:静态内部类,切断内外部对象的关系,生成内部类对象不再依赖外部类对象

9.ListIterator应用于List访问,可以双向与定向

10.容器

  • Collection:存1  Map:存二
  • List:顺序  ArrayList:数组实现 LinkedList:链表实现
  • HashMap:快查 TreeMap:排序 LinkedHashMap:插入顺序+快查
  • Comparable接口:需要对容器类存的对象排序时,需要此对象实现Comparable接口
  • 涉及数据结构:数组、链表、红黑树、哈希表

11.异常占位:声明异常却不进行实际抛出异常

12.Throwable:Error和Exception

13.RuntimeException不需要异常声明以及手动捕获

14.子类方法只能抛出基类方法中说明的异常