面向对象


面向对象

  1. java语言属于面向对象的语言

  2. 面向对象本身不是一门具体的技术,符合人类思维的思想.

  3. 宗旨:把一个复杂的大型的业务,利用面向对象的思想进行面向对象的分析,

    接着面向对象的设计,最终进行面向对象的编程.

  4. 对象是数据在内存中的”载体”

重新认识类和对象

  1. 类是抽象的概念,对象是具体的概念

  2. 类是构建对象的蓝图/模板,对象是类的具体的实例化[表现]

  3. 类是用来描述对象的.

  4. 比如:

    ​ 类:水果 交通工具 学生

    对象:榴莲 飞机 小三

  5. 比如:

    id username age
    100 admin 18
    101 tom 17

面向对象的思想

核心:”一切皆对象”

①分析出系统中业务的关键对象 - “找对象” - 未来页面上显示的数据

②找出对象的**”属性”** - “对象拥有什么”

③分析出对象的”方法” - “对象可以干什么,对象的功能”

④找出对象与对象之间的关系.

1:1 - 一个丈夫对应一个妻子,一个妻子对应一个丈夫.
 
1:N - 一个客户拥有多个订单.一个订单只能属于一个客户 - 70%

N:N - 一个学生可以选择多门课程,一门课程可以被多个学生来选择.
 
自关联 - 自己关联自己.

⑤最后一步才会去考虑具体怎么编码实现.可能也会考虑数据结构或者算法.

“相亲业务” -

  1. 媒婆帮你找一个”对象”
  2. 你要查看”对象”的属性
  3. 询问”对象”的功能
  4. 分析你和”对象”是否来道🌩
  5. 考虑 - 追 - 彩礼 - 结婚 - 具体怎么实现!

面向过程的思想

C是典型的面向过程的思想

①优先考虑的就是算法和数据结构 - 考虑的就是具体怎么实现.

实体类

实体类就是用来描述对象的.

实体类中包含属性,构造方法,getter/setter方法,toString方法.

如何定义属性

语法:

修饰符 数据类型 属性名 [=初始值];

修饰符

public 公开的

private 私有的

数据类型

  1. 八种基本数据类型
  2. 内置对象类型以及自定义对象类型.

属性名

参考变量的命名 - “小驼峰”

三大特征 - 封装性

封装 - Encapsulation - 屏蔽底层的细节,数据提供保护的机制

  1. 属性私有化

  2. 提供getter/setter方法

    setter方法 - set属性名[首字母变大写] - 推荐的命名规则

    setter方法这种设置值的好处

    2-1. setter方法中是可以进行参数有效性判断的.

    2-2. 业务需求改变了 - 属性名称改变了,使用到这个属性的具体的地方都要发生改变 - “可维护性”

    2-3. 并不是所有的属性的值都是通过那么太简单的计算得到的.

    public class Orders{
      private int id;
         
      private double price;
         
      private int count;
         
      private double total;
         
      //getter/setter - 提供好了
         
      public double getTotal(){
        double result = this.price * this.count;
        return result;
      }
         
    }
       
    Orders o = new Orders();
    o.setPrice(100.0);
    o.setCount(10);
       
    //o.setTotal(o.getPrice()*o.getCount());
    System.out.println(o.getTotal());
       
    

    2-4. 并不是所有的属性都需要对外进行公开的.

this关键字

  1. 作用1 - 当前对象,区分方法中参数和实体类中的定义的属性 - 当两者同名的时候.

  2. 调用当前实体类中已经存在的另外一个构造方法.

    2-1. this()调动空参

    2-2. this(参数1,参数2) - 带参构造

    2-3. this调用构造的语句一定要在构造体的首行

  3. this和super语句的区别

toString方法

  1. 当我们直接输出对象的时候,默认一定会去调用toString方法 - 如果这个对象是null,那么不会调用toString方法的

  2. 当自定义的实体类中没有手动提供toString方法,那么这个对象会自动去调用java.lang.Object类中的toString方法

    public String toString() {
      return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    
  3. java.lang.Object - 它是所有的类的根类,基类,超类,父类.

    如果某个类没有明确指定它的父类,那么这个类默认会直接继承java.lang.Object类

    “User类是Object类的儿子” - 规定 - “子类可以调用父类中所有的公开的成员

  1. Object类中提供的toString方法只能用来返回对象的内存地址 - 不满足实际的打印需求

    所以需要在实体类中重新重写这个toString方法.

  2. 当子类User类一旦重写了toString方法之后,那么就会采取”就近原则”,直接调用自己重写

    之后的toString方法.

构造方法-constructor

作用:创建对象的时候调用构造方法,通过new关键字

可以在创建对象的同时进行赋值操作,赋值的方式只有1次,setter赋值,可以多次赋值

特点

  1. 当实体类中如果没有手动提供任何一个构造方法的时候,那么系统会自动分配一个

    空参构造.如果实体类中一旦手动提供了带参构造之后,那么系统将不会再分配一个空参构造了.

  2. 定义的时候,不需要返回类型的

    public 类名([参数列表]){
      //构造体
    }
    
  3. 构造允许重载的

  4. 实体类中推荐只用提供空参,全参


文章作者: 码农耕地人
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 码农耕地人 !
  目录