zoukankan      html  css  js  c++  java
  • 《Java编程思想》阅读笔记4

    (1)接口
        先摘抄一些话:
        接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。
        接口被用来建立类与类之间的协议。
        策略设计模式:创建一个能够根据所传递的参数对象的不同而具有不同行为的方法;这类方法中包含所要执行的算法固定不变的部分,而“策略”包含变化部分。策略就是传递进去的参数对象,它包含要执行的代码。自己还是先不写这些有关设计模式的了,还没有搞明白,也不知道具体会在什么情况下使用,没有实际的使用经验,担心误导啊!!!
       (2)内部类
        内部类:将一个类的定义放在另一个类的定义内部。内部类是使用接口实现多重继承更加完整有效,可以根据所要解决问题的具体情况,选择是否在类中通过使用内部类,来实现多重继承。
        1.链接到外部类:当生成一个内部类的对象时,此对象与制造它的外围对象(类)有联系,可以访问外围类的所有成员。需要这样用时,应该由此外围对象创建(使用.new,或者外类中有定义的成员函数使用new创建了内部类并返回)。同时,内部类可以通过.this来链接到外部对象的引用上。因此可以想到,除了静态内部类(嵌套类),在拥有外部类对象之前是不能创建内部类对象的。
        2.方法中的内部类
        在某个方法或者某个作用域中定义的内部类,类似于这个作用域中的局部变量,只在这个作用域中有效,而不会与外部定义冲突;同时使内部类继承或实现接口,然后再利用向上转型,将所获得对象传递出来。
        3.匿名内部类
    package com.test.myjava;


    class Shape{
    private int i=0;
    Shape(){ System.out.println("Class Shape");}
    public int geti(){ return i;}
    }

    public class JavaExample {
        public Shape shape(){
        return new Shape(){//匿名类定义
        private int i = 11;
        public int geti(){ return i; }
        };
        }
    public static void main(String args[]){
    JavaExample j = new JavaExample();
    Shape s = j.shape();//创建了一个继承自Shape的匿名类的对象,向上转型为Shape
    System.out.println("s i=" + s.geti());//调用匿名类中的geti
    }
    }
    /*输出:
     * Class Shape
     * s i=11
     */
    在图形化编程中,很多的事件监听器用到,在工厂设计模式中的使用以后再说了。
        4.嵌套类
        将内部类声明为static的(即为嵌套类),使得内部类不再与其外围类之间有联系,从而在创建嵌套类时不需要外围类对象。由于接口中的任何类都自动的是public和static的,因此可以在接口中使用,设置可以实现外围接口。
        感觉这样写老是太浅显,因为不在项目中使用,也就没有更好的理解,坚持着抽空闲时间记录着吧!!!

  • 相关阅读:
    gitlab Failed to register this runner. Perhaps you are having network problems runner 注册失败问题解决
    gitlab pipelines 使用
    centos 7 bbr 安装
    kafka ksql && docker 安装试用
    netflix vector 系统性能监控安装使用
    keycloak && docker安装 &&spring boot 集成使用
    gogs docker 安装
    alpine docker 镜像 时区问题
    nginx 流量拷贝模块 ngx_http_mirror_module 安装试用
    ulimit  设置
  • 原文地址:https://www.cnblogs.com/lihaodeworld/p/14809833.html
Copyright © 2011-2022 走看看