• 5. Java 面向对象


    Java 面向对象

    1. 什么是面向对象

    • Java 的核心思想就是:OOP

    1.1 面向过程 与 面向对象

    • 面向过程

      步骤清晰简单,按步骤执行

    • 面向对象

      物以类聚,分类的思维模式。面对问题先分类,再单一思考,对最后的细节进行面向过程的思索

      适合处理复杂的事物

    • 宏观上,通过面向对象的思路分析;微观上,通过面向过程的思路出路

    面向过程和面向对象的区别

    • 面向过程:性能优于面向对象。
    • 面向对象:易维护、易扩展、易复用

    面向过程性能比面向对象高?

    • 由于Java是半编译语言,最终的执行代码不是CPU可执行的二进制机器码。
    • 而面向过程的语言大多数是直接编译成机器码来执行,但是有一些脚本语言性能也不一定比Java好。

    1.2 什么是面向对象

    • 面向对象编程:OOP (Object-Oriented Programming)
    • 面向对象的本质:以类的方式组织代码,以对象的形式封装数据。
    • 抽象
    • 三大特性
      • 封装
      • 继承
      • 多态
    • 从认识的角度先有对象 后有 类。类是抽象的,是对对象的抽象
    • 从代码的角度是先有类再有对象

    1.3 方法

    • 静态方法与类一起加载的,非静态方法对象实例化之后才加载。因此静态方法可直接通过类调用。

    2. 创建对象

    • 使用 new 关键字创建对象
    • 创建对象时除了分配内存空间外,还会给 创建好的对象 进行默认的初始化以及对类中的构造器的调用
    • 类中的构造器也称为构造方法,是创建对象时 必须要调用的。
    • 构造方法的特点
      1. 必须与类的名字相同
      2. 必须没有返回值类型,也不能写 void
      3. 构造函数分为:无参构造和有参构造
    • 构造函数的作用
      1. new 本质再调用构造函数
      2. 初始化对象的值

    2.1 小结

    • 类与对象

      类是抽象的,对象是实例化的对象

      类的属性

      1. 静态的属性:
      2. 动态的行为:方法
    • 对象的引用:对象是通过引用来操作的:栈--->堆

    • 对象的创建和使用

      1. 必须使用 new 关键字,构造器
      2. 对象的属性

    3. 三大特性

    • 程序设计追求 高内聚,低耦合
      • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
      • 低耦合:仅暴露少量的方法给外部使用

    3.1 封装

    • (数据的隐藏)通常,应禁止直接访问一个对象中数据的实际表示,而应通过接口来访问

    • 属性私有:get / set

    • 封装的作用

      • 提高了代码的安全性
      • 隐藏了代码的实现细节
      • 统一接口
      • 可维护性提高了

    3.2 继承

    • 继承的本质是某一批类的抽象,从而实现更好的建模
    • extends ; 子类是父类的扩展
    • Java 只可以单继承
    • 所有的类都直接或者间接继承 Object

    关键点:

    • super 注意点

      1. super 调用父类的构造方法,必须在构造方法的第一个
      2. super 必须只能出现在子类的方法或者构造方法中
      3. super 和 this 不能同时调用构造方法
    • this

      • 代表的对象不同
        • this 本身调用者这个对象
        • super 代表父类对象的应用
      • 前提
        • this 没有继承也可使用
        • super 只能在继承条件才可使用
      • 构造方法
        • this 本类的构造方法
        • super 父类的构造方法

    3.3 多态

    • 父类的引用指向子类的实例 Person person = new Student();
    • 即同一个方法可以根据发送对象的不同而采用多种不同的行为方式
    • 一个对象的类型是确定的,但是可以指向对应的引用类型有很多
    • 多态是 方法 的多态,属性没有多态
    • 父类与子类 有联系
    • 多态存在的条件
      1. 存在继承关系
      2. 方法必须重写
      3. 父类的引用指向子类对象
    • new 左边是引用类型,右边是实际类型。而对象能使用的方法看引用类型

    instanceof

    • 判断两个类之间是否存在父子关系

    static

    • 类加载时就被加载,且只加载一次

    4. 修饰符

    • public:公有的
    • protected:受保护的
    • private:私有的
    • static:静态
    • final:修饰常量
    • abstract:抽象

    在一个静态方法中,调用一个非静态成员为什么是非法的?

    • 因为静态方法随着类加载就已经初始化完成了,而非静态成员需在对象实例化之后才完成初始化,所以没法调。

    静态方法 和 实例方法的不同

    • 静态方法 可以以 类名.方法名 调用,而实例方法不可以,必须实例化之后
    • 静态方法随着类加载就已经初始化完成了

    4.1 常用关键字:

    • static
    • final
    • this
    • super

    5. 抽象类

    • Java 的类是单继承的,接口是可以多继承的
    • 抽象类不能new, 只能靠子类去实现。约束
    • 抽象类可以写普通方法,抽象方法必须存在抽象类中

    6. 接口

    • 定义:interface
    • 接口都需要有实现类
    • 接口的作用:
      1. 约束
      2. 定义一些方法让不同的人实现
      3. 方法都是 public abstract
      4. 常量都是 public static final
      5. 接口不能被实例化,因为接口中没有构造方法

    接口和抽象类的区别

    • 接口的方法默认是public, 抽象类中可以有public, protected, default 这些。(不能有private , 抽象类的方法就是为了要被重写)
    • 接口中的方法不能有实现(jdk8 可以有默认实现),抽象类可以有非抽象的方法
    • 一个类可以有多个接口,但只能实现一个抽象类。

    7. 内部类

    • 局部内部类
    • 静态内部类:方法外面,类里面
    • 13匿名内部类:方法里面
  • 相关阅读:
    如何将asp.net MVC2项目升级为MVC3项目(微软官方自动升级工具:ASP.NET MVC 3 Application Upgrader )
    扩展Html Helper类,ASP.NET MVC框架提供了一个帮助我们构造Html元素的类:TagBuilder
    详解ASP.NET MVC2项目升级到MVC 3 RC
    NHibernate学习
    ASP.MVCNOTE
    MVC问题反馈页面代码
    Silverlightnote
    jqGrid
    必须掌握的八个DOS命令
    分页且带条件的存储过程
  • 原文地址:https://www.cnblogs.com/blackBlog/p/13451212.html
Copyright © 2020-2023  润新知