Java学习笔记(面向对象)

目录

一、初始面向对象

Object-Oriented Programming, OOP

本质:以类的方式组织代码,以对象的方式组织(封装)数据

先有类后有对象,类是对象的模版,对象是一个具体实例。

二、对象的创建分析

  • 使用new关键字创建对象
//学生类
public class Student {
    //属性:字段
    String name;
    int age;

    //无参构造器
    public Student() {
    }

    //有参构造器
    public Student(String name) {
        this.name = name;
    }

    public void study() {
        System.out.println(this.name+"is studying!");
    }
}

  • 构造器必须掌握:和类名相同,没有返回值
  • 使用new关键字,本质是在调用构造器
  • 有参构造:一旦定义了有参构造,无参构造就必须显式定义
  • 用于初始化对象的值
  • Mac快捷键command+N插入构造器
  • Windows快捷键Alt+Insert
  • 对象通过引用来操作

三、面向对象三大特性

  • 封装
    • 高内聚:类内部数据操作细节自己完成,不允许外部干涉
    • 低耦合:仅暴露少量的方法给外部使用
    • 属性私有,get/set:通过接口使用数据
    • 意义
      • 提高程序安全性,保护数据
      • 隐藏代码实现细节
      • 统一接口
      • 增加系统可维护性
  • 继承
    • 继承的本质是对某一批类的抽象,从而实现对现实世界更好地建模
    • extends的意思是扩展,子类是父类的扩展
    • Java中类只有单继承,没有多继承
    • 继承是类和类之间的一种关系
    • 子类、派生类
    • Java中所有类继承Object类
    • super
      • super调用父类的构造方法,必须在构造方法的第一个
      • super必须只能出现在子类的方法或者构造方法中
      • super和this不能同时调用构造方法
    • this
      • 代表的对象不同
        • this:本身调用者这个对象
        • super:代表父类对象的调用
      • 前提
        • this:没有继承也可以使用
        • super:只能在继承条件才可以使用
      • 构造方法
        • this:本类的构造
        • super:父类的构造
    • 方法重写
      • 需要有继承关系,子类重写父类的方法
      • 方法名必须相同
      • 参数列表必须相同(否则变成重载)
      • 修饰符,范围可以扩大
      • 抛出的异常:范围可以被缩小,但不能扩大
    • 重写子类的方法和父类必须一致,方法体不同
    • 为什么需要重写?
      • 父类的功能,子类不一定需要或者满足
      • override
  • 多态
    • 同一个方法可以根据发送对象的不同而采用多种不同的行为方式
    • 多态是方法的多态,属性没有多态
    • 父类和子类有联系,类型转换异常ClassCastException
    • 存在条件:继承关系,子类重写父类的方法,父类引用指向子类对象
    • instanceof:判断一个对象是什么类型
    • static:静态块、静态导入包
    • final:修饰的类不能被继承

四、抽象类和接口

抽象类

  • abstract关键字
  • 只有方法名,没有方法的实现。
  • 不能new出来,只能约束
  • 抽象方法必须在抽象类中

接口

  • interface关键字
  • 实现了接口的类 必须要重写接口中的方法
  • 利用接口实现多继承
  • 接口的作用
    • 接口是一种约束
    • 定义不同的方法,让不同的人实现
    • 接口中的方法都是public abstract
    • implements可以实现多个接口
    • 必须要重写接口中的方法

五 、内部类及OOP实战

上一篇:原型模式


下一篇:java中super关键字详解