• JAVA基础--面向对象09


    一、适配器设计模式

      1.适配器模式  

        adapter:适配器;

        电脑电源适配器;作用:转换电压,将不符合使用要求的220伏特的市电转换成我们电脑可以使用的电压;

        适配器:将不符合使用要求的东西转换成符合我们使用要求的东西;

      2.生活中的适配    

        Java中,根据适配的目标不同,可以将适配器分为三类:

        对类的适配;对对象的适配;对接口的适配;

        对接口的适配:

        需求:有一个接口,里面定义了5个抽象函数;而我们要写一个类实现这个接口,但是在我们的类中,只需要使用其中的一个方法;

       

        使用接口的适配:

       

        接口的适配,又叫做接口的实例化;

        心得:类似于你先写一个interface 接口 然后在写一个抽象类(这个就是adapter) 实现了这个接口,然后再你要写的类上继承这个抽象类,然后重写我们需要的方法

    二、内部类

       1. 内部类介绍

          a. 内部类引入        

           一个事物里面,会有另外一个事物,而且二者是相互依赖的;

           人,里面有心脏;

           原来的做法:

               

          问题:人和心脏是相互独立的两个类,不能体现相互依赖的关系;怎么解决?

               

          这种做法,就是使用的内部类;

          b. 内部类的代码体现      

          一个类可以书写在另外一个类的里面,写在里面的那个类,就是内部类;

          包含一个内部类的类,就叫做外部类;

             

          小结:

          根据内部类在外部类中的书写位置,可以将内部类分为两类:

          成员内部类;局部内部类;

      2. 成员内部类   

          根据修饰符的不同,成员内部类又可以分为一般成员内部类、私有成员内部类和静态成员内部类;

          a. 一般成员内部类

               

            a.1 内部类可以直接使用外部类的所有成员;

            

            

            要创建一个一般成员内部类的对象,必须先有外部类的对象存在;

            

            a.2外部内怎么使用内部类成员

            外部类要使用内部类成员,需要先创建内部类对象;然后通过内部类对象来使用;

            在一般成员内部类中不能定义静态成员变量和成员函数;(除了常量变量)

            

            

            

            结论:在一般成员内部类中,能使用static修饰的成员,只能是final的基本数据类型和字符串类型的数据;

            其他引用类型的变量(包括数组)也不行;

            a.3外部类以外的类怎么使用内部类成员

                   

            在外部类以外的类中需要先创建外部类的对象,然后根据这个对象创建内部类的对象,然后根据内部类的对象来访问内部类的属性和行为;

           b.  私有成员内部类    

              使用private关键字修饰的内部类就是私有成员内部类;

              私有成员内部类,只能在他所属的外部类中使用;

              

          c.静态成员内部类       

             被static关键字修饰的内部类,就是静态成员内部类;

             静态的成员内部类,和外部类的对象无关了;

             所以静态成员内部类,又被叫做嵌套类;

                  

            静态成员内部类,不能直接使用外部类的非静态成员;

            要使用外部类的非静态成员,需要先创建外部类的对象,通过外部类的对象来调用;

            外部类的静态成员,可以在静态成员内部类中直接使用;

            

            要创建静态内部类的对象,不需要先创建外部类的对象;

            

            结论:在外部类以外使用静态成员内部类,和使用一般类一样,仅仅是在类的名字前要加上外部类的类名;

            

            d.静态成员内部类的一个应用         

                使用静态成员内部类实现单例设计模式:

              

      3. 局部内部类  

        局部内部类,是写在函数中的类,可以直接使用外部类的静态成员,和通过外部类的对象使用外部类的非静态成员;

        局部内部类,只能在定义它的函数中使用;

        别的地方要使用它,只能通过调用这个函数来使用;

        

          

          要使用所在函数的局部变量,需要将局部变量声明为final的;

          (在JDK8中,不需要人为定义成final了,编译器会做相应的优化)

      4. 匿名内部类

        a. 匿名内部类   

          内部类也是一个类,可以实现接口和继承其他类;

        

          

        结论:当内部类实现一个接口或者继承一个类时,如果只需要被使用一次,就可以使用匿名内部类,简化书写;

      

      b. 匿名内部类的面试题分析

        

    三、包

      1. 包的引入   

        所有书写的java源文件和编译好的class文件都放在同一个文件夹下,当项目复杂时,文件会非常多,就不便于管理;

        而且,在同一个文件夹里,不能出现相同名称的文件;

        思考:在平时,为了方便管理过多的文件,需要创建很多文件夹,根据自己的使用习惯,将不同的文件放到不同的文件夹中;

        在java中,也可以这么做;文件夹,在Java中,叫做包;

        通过创建不同的包,就可以实现class文件的管理;

      2. 包的创建

        a. 包的声明方法   

          java的包,是直接声明在java源文件中的,在文件的最开始;

          使用关键字:package声明;

          声明格式是:在关键字后面加上包名;

          包名的写法:也是一个标识符;所有字母都是小写;

          一般会创建多层包,多层包名之间使用 . 分开;

        例如:

          单层包名:     package   demo;

          多层包名:     package  demo.test1;

          包名有一个命名习惯:

          多层包名,前面部分,是公司域名倒置;

          传智播客:www.itcast.cn;

          域名倒置:cn.itcast.

          倒置的域名后面,一般跟的是项目名,再后面跟的是项目中的模块名;

          

        b.带包声明的类的编译和运行

          

      3. 不同包中类的访问方式

          

             

          结论:

          1、要访问其他包中的类和类中的方法,这个类和这个被访问的方法,都要是public的;

          2、要访问其他包中的类,要在类名前面加上包名;

            如果在类中多次使用其他包中的类,使用包名加类名的方法,很麻烦,有一个简单的办法:导包;

              

          如果需要在一个包中导入多个类,一个一个类导入也很麻烦,简单的办法是:直接在包名后面不写类名,使用*代替:

               

          这样做可以导入com.demo2包中的所有类;(如果这个包里面还有子包,不能导入);    

          总结:

            要使用其他包中的类,可以有两种方式的导入:

           a、在用到其他类时,写全名(包名加类名);

              

            弊端是:如果多次使用这个类,每用一次就要写一次,很麻烦;

          b、在类前面,包声明后面,使用import关键字导入该类;

            

      4. JAVA 访问权限

        Java中的访问权限,总共四种,使用三个关键字修饰:

        从小到大排列:

            私有的(private):被修饰的成员,只能在本类中使用;

            默认的(没有修饰符,就是默认的):只能在本类和同一个包中的不同类之间访问;

            受保护的:(protected)和默认的相比,在不同的包中的子类可以访问父类中的受保护的内容;

            公共的(public):被修饰的成员,所有地方都可以访问;

    java访问权限表:(yes:可以访问;no:不可访问)

    private(私有的)

    默认的(什么都不写)

    protected(受保护的)

    public(公共的 )

    同一个类中

    yes

     

    yes

    yes

     

    yes

    同一个包中不同类之间

    no

    yes

    yes

    yes

    不同包中有继承关系的类

    no

    no

    yes

    yes

    不同包中没有继承关系的类

    no

    no

    no

    yes

    总结:

      私有的,是访问权限最小的,只能在本类中使用;

      公共的,访问权限最大,所有地方都可以使用;

      protected:受保护的,主要就是给子类使用的;

      默认的,只能在同一个包中使用

    四、API文档查询

        发中,更多的情况使用别人已经写好的东西;

      1. API概念    

      API(Application programming interface):应用程序接口;

      别人写好的供大家使用的程序,就是API;而这个帮助我们理解和使用API的文档就叫做API帮助文档;

      2.API文档的查询

         a. 按包查询

           如果事先知道要找的类在那个包下面,就可以使用按包查找的方法:

          

        b. 按索引查询  

          如果事先已经知道要使用的类的类名,就可以使用按索引查找的方法:

        

        3.  类所在的包

         

        4. 类的继承关系

         

        5. 当前类实现的接口

          

        6.类或者接口的定义格式

          

        7.类或者接口的功能描述

          

        8. 类的构造方法

             

          如果有的类,所有构造函数都是私有的,就不会出现构造方法摘要;

       9.类的方法摘要

          

          点击方法摘要,可以进入方法使用详情:

          

          

        10. 字段摘要 

            System:

          

          

          

          

          

        

        

          

        

          

              

            

          

            

           

  • 相关阅读:
    jvm client模式和server模式
    TOMCAT开启APR模式
    Spring MVC 关于controller的字符编码问题
    彻底解决Spring MVC 中文乱码 问题
    js中字符串拼接html
    分布式文件系统之MooseFS----介绍
    CopyFile函數詳解
    Delphi 接口使用中,对象生命周期管理,如何释放需要注意的问题
    年度调查 看看 2016 年 Go 语言调查结果
    Sleep(0)的作用
  • 原文地址:https://www.cnblogs.com/Kubility123/p/7606513.html
Copyright © 2020-2023  润新知