zoukankan      html  css  js  c++  java
  • 面向对象

    1、类与对象

      类是描述相同事物的共同特征的抽象;

      对象是具体存在的实例,是真实的,是类的具体;

    2、类的五大成分(有且仅有)

    • 成员变量(Filed:描述类和对象的属性信息的);
    • 成员方法(Method:描述类或者对象的行为信息的);
    • 构造器(Constructor:初始化一个雷的对象并返回引用);
    • 代码块
      按照有无static区分:
        静态代码块【重点】  -  属于类,会与类一起优先加载,而且自动触发一次;可以用于执行类的方法之前进行静态资源的初始化操作;
             实例代码块  -  属于类的每个对象,会与类的每个对象加载;每次实例化类的时候执行一次;实例代码块可以用于初始化实例资源;实例代码块的代码实际上是提取到每个构造器中执行的;

    • 内部类
        静态内部类  -  在外部类内部,static修饰;可以访问外部类的静态成员,不能访问实例成员

      外部类名称.内部类名称 对象名称 = new 外部类对象.内部类对象

        实例内部类(成员内部类)  -  属于外部类对象,不能定义静态成员

      外部类名称.内部类名称 对象名称 = new 外部类对象.new 内部类对象

        局部内部类  -  代码块中定义【木有软用】
        匿名内部类(重点)  -  就是一个没有名字的局部内部类,为了简化代码;

    3、三大特征

      3.1 封装  -  隐藏实现细节,提供公共访问方式;可以提高安全性,实现代码的组件化;

      3.2 继承  -  子类到父类的一种关系,子类继承一个父类,就可以直接得到父类的属性和行为;提高代码的复用;

        访问特点:就近原则,子类有就用子类的,子类没有父类找,父类没找到就报错;

        构造器的特点:子类构造器默认一定会先访问父类的无参构造器,再执行子类的构造器;

        方法重写要求:

          方法名和形参列表要和父类一致;

          返回值类型范围小于等于父类的;

          修饰符权限要大于等于父类的权限;

          抛出的异常要小于等于父类;

      3.3 多态  -  父类的引用指向子类的对象  Person person = new Student();同一个类型的对象,执行同一个行为,在不同的状态下会表现出不同的行为特征;

        识别技巧:

          方法的调用:编译看左边,运行看右边;
          变量的调用:编译看左边,运行看左边;

    4、权限修饰符

      

    private

    缺省

    protected

    public

    本类中

    可以访问 可以访问 可以访问 可以访问

    本包下其他类中

      可以访问 可以访问 可以访问

    其他包下的类中

          可以访问

    其他包下的子类中

        可以访问 可以访问

    5、关键字说明

      5.1 this关键字  -  代表了当前对象的引用;

      5.2 static关键字  -  区分成员变量和成员方法是属于类还是属于对象的,表示在内存中只能有一份;

      5.3 final关键字  -  最终的含义,可以用于修饰类,方法,变量;

        修饰类:类不能被继承;

        修饰方法:方法不能被重写;

        修饰属性:属性有且仅能被赋值一次;

        扩展1: final, finally, finalize的区别?     

          final: 用于声明属性, 方法和类, 分别表示属性有且仅能被赋值一次, 方法不可覆盖, 被其修饰的类不可继承。
          finally: 异常处理语句结构的一部分, 表示一定会执行。
          finalize: Object 类的一个方法, 在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收, 例如关闭文件等。

        扩展2:常量的定义

    public static final

    6、抽象类

      6.1 是什么  -  拥有抽象方法的类,抽象类不能被实例化;

      6.2 作用  -  为了被子类继承,约束子类必须重写抽象方法;

      6.3 注意事项

        抽象类不能被实例化;

        抽象类有且必须有构造器,用于提供给子类创建对象时初始化父类成员使用的;

        抽象类中,不一定有抽象方法,拥有抽象方法的类一定是抽象类;

        抽象类的子类,必须重写父类的抽象方法,否则子类也必须定义为抽象类;

        抽象类存在的意义是为了被子类继承,抽象类体现的是模板思想。;

    7、接口

      7.1 是什么  -  接口体现的是规范思想、约束,接口比抽象类更抽象,是更加彻底的抽象,子类实现接口,必须重写全部的抽象方法,在JDK1.8前接口只能是抽象方法和常量;

      7.2 接口的成分

    #抽象方法
    public abstract 返回值类型 方法名(形参);//public abstract 可省略
    
    #默认方法,其实就是我们之前写的实例方法只能用接口的实现类调用
    public defalut  返回值类型 方法名(形参){
      方法体...  
    }//public可省略
    
    #静态方法,接口的静态方法只能用接口的类名称调用
    public static 返回值类型 方法名(形参){
      方法体...  
    }//public可省略

      7.3 注意事项

        如果实现了多个接口,多个接口中存在同名的静态方法并不会冲突;原因是只能通过各自接口名访问静态方法;

        当一个类继承父类并实现若干接口,父类中成员方法和接口默认方法重名时,子类就近选择父类的成员方法;

        当一个类实现多个接口时,多个接口存在同名的默认方法;实现类必须重写这个方法;

        接口中,没有构造器,不能创建对象;

  • 相关阅读:
    进度条
    html5 表单新增事件
    html5 表单的新增type属性
    html5 表单的新增元素
    html5 语义化标签
    jq 手风琴案例
    codeforces 702D D. Road to Post Office(数学)
    codeforces 702C C. Cellular Network(水题)
    codeforces 702B B. Powers of Two(水题)
    codeforces 702A A. Maximum Increase(水题)
  • 原文地址:https://www.cnblogs.com/xp2h/p/12518575.html
Copyright © 2011-2022 走看看