第六天 面对对象和面对过程

从语言方面的区别
  • 对C来讲,完全面向过程的
  • 对C++来讲,一半面向对象,一半面向过程
  • 对Java来讲,完全面对对象
什么是面对过程的开发方式
  • 主要特点是注重步骤,注重实现功能的步骤;也注重实现功能的因果关系
  • 面向过程中,没有对象的概念,只有实现功能的步骤和因果关系
  • 面向过程的缺点
    1. 高耦合,低扩展
    2. 主要是每步之间的因果关系
  • 面对过程的优点
    1. 对于小型项目(功能),使用面向过程的方式,效率很高
      • 原因:
        • 不需要对象的提取和模型的建立
        • 可以直接开始实现功能
        • 直接编写代码的因果关系,从而达到实现功能的目的
    2. 快速开发
什么是面对对象的开发方法
  • 更符合人类的思维方式,因为人类就是以对象的方式认识世界,所以面对对象更容易接受
  • 面对对象就是将世界分割成不同的单元 —— 每个单元都可以实现成对象,在特定环境下,进行驱动,从而让各个对象协作,最终形成一个系统
  • 面对对象方式开发的特点
    • 低耦合,高扩展
小总结

面向过程主要关注的是:实现步骤以及整个过程

面向对象主要关注的是:对象和对象之间的组合

面对对象三大特征
  1. 封装
  2. 继承
  3. 多态

  • 任何一个面向对象的编程语言都有这三个特征
类和对象的概念
什么是类
  • 类是一个抽象的概念,是一个模板,是一个景观思考、总结、抽象的结果
  • 类本质上是世界中某些事物具有的共同特征
什么是对象
  • 对象是一个时机存在的个体
    • java中想要得到对象,则必须先定义类
    • 类描述的是对象的共同特征信息,对象就是根据类创建出来的个体
  • 对象还有另外一个名词:实例
  • 通过类创建对象的过程叫做:创建or实例化
  • 通过对象得到类的过程叫做:抽象
  • 类 = 属性 + 方法
小总结
  • 类:不存在的,是经过思考、总结、抽象的结果
  • 对象:实际存在的个体
  • 实例:对象的另一个称呼
  • 实例化:通过类创建对象的过程
  • 抽象:提取多个对象具有共同特征的过程
类的定义
  • 语法格式
    • [修饰符列表] class 类名 {类体}
      • 类体 = 属性 + 方法
      • 属性在代码中是以“变量”的形式存在
      • 方法描述的是动作、行为
      • 修饰符列表可以省略
  • 属性为什么是以变量的形式存在
    • 属性对应的是数据,而数据只能存储在变量中(在代码中)
    • 属性其实就是变量
  • 变量的分类(根据其出现的位置)
    • 方法体中声明的变量:局部变量
    • 方法体外声明的变量:成员变量
  • 变量的特点
    • 必须先声明,再赋值,然后才能访问
    • 成员变量可以不用手动赋值,因为系统会为其赋上默认值
对象的创建
创建对象的语法
  • new 类名();
  • 类是模板,通过该模板可以创建无数个对象
  • new 是一个运算符,专门负责对象的创建
  • 例子:
package Day06面对对象编程;

public class Test01 {
   

    public static void main(String[] args) {
   

        Student s1 = new Student();
        Student s2 = new Student();
         /*
        可以类比于:int i = 10;
        s1 是变量名
        Student 是变量s1的数据类型(引用数据类型)
        new Student() 是一个对象(Student类创建出来的student对象)
        s1 不能叫做对象,s1只是一个变量名字
        */

        //该代码相当于通过Student类实例化了一个Student对象
    }

}

//不能将 class Student 放在public class 中,否则会报错:Error:java: 无法从静态上下文中引用非静态 变量 this

class Student {
   

    //            观察学生对象的共同特征————只观察属性
//            学号:int
    int ID;
    //            姓名:String
    String name;
    //            年龄:int
    int age;
    //            性别:char或boolean
    boolean gender;
    //            住址:String
    String address;
//
//            PS:属性是成员变量
}
  • 数据类型包括两种
    • 基本数据类型
      • byte short int long float double boolean char
    • 引用数据类型
      • String Student…
      • Java中所有的“类”都是属于引用数据类型
      • Student 既是一个类名,又是一个“类型名”
实例变量是什么
  • 因为对象又称为实例,所以实例变量就是对象级别的变量
  • 例如Test01中的 ID、name、age、gender、address
  • 凡是通过new运算符创建的对象,都存储在堆内存当中,new运算符的作用就是在堆内存中开辟一块空间
  • 对象和引用的区别
    • 对象是new出来的,在堆内存中存储
    • 引用是,变量保存的内存地址指向堆内存中的对象
空指针异常
  • 出现空指针异常的条件:“空引用”访问相关的数据时
  • 实例:
package Day06面对对象编程;

public class Test02 {
   
    public static void main(String[] args) {
   
        //创建Customer对象
        Customer customer = new Customer();

        //访问customer的id
        System.out.println(customer.id);

        //给id重新赋值
        customer.id = 1;

        //重新访问customer的id
        System.out.println(customer.id);

        //将customer保存的内存地址清除
        customer = null;

        //再次访问customer的id
        System.out.println(customer.id);    //java.lang.NullPointerException 空指针异常
        //因为从语法角度出发,这句话是符合java语法表达机制,所以编译器没有报错
    }
}

class Customer{
   
    int id;
    //成员变量中的实例变量,应该先创建对象,然后通过“引用.”的方式访问
}
方法调用时参数的传递问题

例一:

public class Test03 {
   
    public static void main(String[] args) {
   
        //局部变量,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值