(20)Java基础 --面向对象(1)

目录

面向对象

一、概述

二、生活举例

三、类与对象的关系

四、类的构成

五、类的定义

类的属性

类的方法

创建实例(对象)

内存分配图

六、对象的基本使用

七、局部变量与成员变量的区别

八、面向对象练习

九、方法的参数传递

十、匿名对象

十一、形参和实参


面向对象

一、概述

面向:

      看向,看中,面对。

对象:

      帮你做事情的那个人。

“面向对象”(英语:Object Oriented,简称OO)是一种以事物为中心的编程思想。

如今主流的软件开发思想有两种:一个是面向过程,另一个是面向对象。面向过程出现得较早,典型代表为C语言,开发中小型项目的效率很高,但是很难适用于如今主流的大中型项目开发场景。面向对象则出现得更晚一些,典型代表为Java或C++等语言,更加适合用于大型开发场景。两种开发思想各有长短。

面向对象是相对于面向过程而言的(C则是一个典型的面向过程的语言),站在面向对象的角度去看问题,你则是对象的动作的指挥者。如果站在面向过程的角度去看问题,你则是动作的执行者

对于面向过程的思想:当需要实现一个功能的时候,看中的是每一个步骤怎么做,整体的过程是怎样的。每一个操作都需要自己亲力亲为。

对于面向对象的思想:当需要实现一个功能的时候,不看重具体的过程和步骤是怎样的,而是关心“谁能帮我做这件事情”。(偷懒儿,找人帮我做事儿。)

面向对象的三大特征有:封装性、继承性、多态性。

二、生活举例

1、洗衣服

      面向过程(手洗):脱衣服、找一个盆、加水、加洗衣粉、浸泡30分钟、搓洗、拧衣服、倒掉水、再加水、漂洗、拧衣服、倒掉水、晾衣服。

      面向对象(机洗):脱衣服、放入洗衣机、按下开关、拿出衣服晾晒。

2、买电脑

      面向过程(自己买):需要电脑、查询参数信息、横向比较机型、了解打折信息、与店家讨价还价、下单、收快递、开机验货、确认收货。

      面向对象(找人买):需要电脑、找秘书帮我买、收电脑。

3、吃饭

      面向过程(自己做):我饿了、买菜、洗菜择菜、切菜、起火、炒菜、盛菜、吃饭、刷碗。

      面向对象(出去买):我饿了、买饭、吃饭。

import java.util.Arrays;


public class ObjectOrientedDemo01 {
    public static void main(String[] args) {
        int[] array = { 10, 20, 30, 40, 50 };

        // 首先使用面向过程的思想,每一个步骤细节都要亲自处理
        System.out.print("[");
        for (int i = 0; i < array.length; i++) {
            if (i == array.length - 1) {
                System.out.println(array[i] + "]");
            } else {
                System.out.print(array[i] + ", ");
            }
        }

        System.out.println("==================");

        // 使用面向对象的思想,达到同样的效果。
        // 自己不处理详细的步骤,而是找人帮我做事儿。
        // 在JDK当中已经给我们提供好了一个工具,叫做Arrays
        // 通过这个工具就可以将数组转换成为指定格式的字符串

        // 我自己不做,而是找Arrays帮我把数组转换成为指定格式的字符串
        System.out.println(Arrays.toString(array));
    }
}

三、类与对象的关系

:

      是用来描述现实世界中某一类事物的,描述那一类事物的共同的特点。

我们学习编程语言,就是为了模拟现实世界中的事物,实现信息化来提高工作效率。例如银行的业务系统、超市的结账系统等,都是如此。那么现实世界的事物通常分成两个组成部分:

属性:事物的特征描述信息,“是什么”。

行为:事物的能力行动方案,“能做什么”。

面向对象的语言当中,“类”就是用来模拟现实事物的。类中也有属性、行为两个组成部分,而“对象”是类的具体实例。例如:

      类:抽象的,是一张“手机设计图”。

      对象:具体的,是一个“真正的手机实例”。

类是如何描述 那一类事物的,从哪几方面描述的?

      1、属性

      是从静的一方面来描述的,是那一类事物都有的东西:
             那一类学生都有 姓名, 年龄, 性别,这三个都是属性.

      2、行为

      是从动的一方面来描述的,是那一类事物都能做的事情:
             那一类学生都学习,吃饭, 这两个都是行为.

在类中如何表示属性和行为?

      属性: 
                   使用变量来表示,这个变量需要定义在类的里面,方法的外面.

      行为: 使用方法来表示.

对象:

      是那一类事物中的一个  个体。

类和对象的关系:

      1.先有类,后有对象;

      2.对象是使用类创建出来,没类就没有对象;

      3.想创建对象,必须先把类定义出来;

创建对象的目的,是为了调用对象方法.也就是调用对象的功能,帮我们做一件事情。

类就是创建对象的模板。

四、类的构成

类(Class) 由3个部分构成

  • 类的名称:类名
  • 类的属性:一组数据
  • 类的方法:允许进行操作的方法 (行为)

五、类的定义

类是用来模拟现实事物的代码手段,事物分成属性、行为两个部分,类当中也对应地包含两个部分:

  1. 成员变量(属性):将变量位置直接定义在类中,在方法外,即为成员变量。
  2. 成员方法(行为):将普通的方法去掉static关键字,即为成员方法。

类的定义格式

修饰符 class 类名{
    定义属性
    定义方法
}

类的属性

属性是指类(这类事物)拥有的特征。属性,通常是名词。

      例如:定义一个学生类,拥有的属性有:学号,姓名,年龄,家庭住址...

通常,我们在定义类的属性时,遵循的原则是,需要什么属性就定义什么属性

定义属性的语法:

      [访问控制符] 数据类型 属性名 [=值]

public class Student {
    int id;
    String name;
    int age;
}

类的方法

方法,指一个类的行为(动词)。

方法的四个要素:

      1、访问控制符(修饰符)

      2、返回值类型——(方法调用结束之后,返回给调用者的信息)    void(方法没有返回值)

      3、方法名——调用的时候用来区分

      4、参数列表——参数--方法运行时,需要的额外的信息.方法有返回值,在方法中就一定要有return

public class Student {
    int id; // id --成员变量
    String name;
    int age;
    
    // 成员方法
    public void eat(String food){
        System.out.println("吃"+food);
    }
}

创建实例(对象)

类创建对象的过程叫做实例化

创建对象的格式

类名 对象名 = new 类名();

(对象名,通常叫做对象引用)。

内存分配图

一个对象

      对象的名称其实就是一个局部变量,里面存放的是地址值。真正new出来的对象在堆内存当中,而且成员方法保存的是方法区中的地址。

两个对象

两个引用指向堆里面的同一个对象

六、对象的基本使用

访问属性的格式:

对象名.属性名;

调用方法的格式:

对象名.方法名(实参列表);

public class Student {
    int id; // id --成员变量
    String name;
    int age;

    public void study(){
        System.out.println(name+"认真学习~~~");
    }
}
public class Test02 {
    public static void main(String[] args) {
        Student stu = new Student();
        stu.name = "庄强";
        stu.study();
    }
}

七、局部变量与成员变量的区别

  1. 定义的位置不同:
    1. 局部变量定义在方法内
    2. 成员变量定义在方法外,直接在类中
  2. 内存的位置不同:
    1. 局部变量是在栈内存中的
    2. 成员变量是在堆内存中的
  3. 生命周期不同:
    1. 局部变量随着方法进栈而出现,随着方法出栈而消失
    2. 成员变量随着对象被创建而出现,随着对象被回收而消失
  4. 默认值不同:
    1. 局部变量没有默认值,必须赋值之后才能使用
    2. 成员变量如果没有赋值,那么会有默认值

八、面向对象练习

完成汽车修理功能。

     汽车类(Car)和修理厂类(Factory)

 

     Car的属性和方法:

           属性:名字、颜色、轮胎数量

           方法: 跑。方法要求: 如果汽车的轮子数量少于4个则显示汽车不能正常运行,如果是4个汽车则可以跑起来。

     Factory的属性和方法。

           属性:名字、地址

           方法:修理汽车(修理汽车的轮胎数量)

编写汽车类、修理厂类和测试类。

public class Car {
    String name;
    String color;
    int lunTaiNum;

    public void run(){
        if (lunTaiNum == 4){
            System.out.println("汽车跑起来了~~~~");
        }else {
            System.out.println("汽车不能正常运行,请修理~~~~");
        }
    }
}
public class CarFactory {
    String name;
    String address;

    public void repairCar(Car car){
        car.lunTaiNum = 4;  // 完成了修理工作
        System.out.println("车修好了~~~");
    }
}
public class Test {
    public static void main(String[] args) {

        Car car = new Car();    //创建汽车
        car.name="奥迪";  // 设置属性
        car.color="黑色";
        car.lunTaiNum=3;
        car.run();
        CarFactory carFactory = new CarFactory();   // 创建修理厂
        carFactory.repairCar(car);
        car.run();  // 调用方法
    }
}

九、方法的参数传递

1.传递的参数是基本类型:
      基本类型的数据作为实参传递时,如果修改了形参的值,不会影响 实参的值.
      传递参数时传递的是基本类型的实参的值,也叫值传递.

2.传递的参数是引用类型
       引用类型的数据作为实参传递时,如果修改了形参的值,会影响 实参的值.
       传递是 对象的地址,也叫引用传递.

十、匿名对象

匿名对象:没有名字的实体,也就是该实体没有对应的变量名引用。

创建匿名对象:只创建对象,没有给对象取名字。

匿名对象的用途

      1、当对象对方法进行一次调用的时候,可以使用匿名对象对代码进行简化。

         为什么只对方法,而不调用属性呢?因为匿名对象调用属性没意义。

         如果对象要多成员进行多次调用,必须给对象起个名字。不能在使用匿名 对象。

      2、匿名对象可以实际参数进行传递。

匿名对象只能被使用一次,使用完毕后会被垃圾回收器尽快回收。

通常情况下,创建匿名对象后立即调用它的方法。

在什么时候创建匿名对象?
             当在一个方法中,只有那一个地方使用到对象,就可以创建一个匿名对象。

匿名对象可以用在哪些地方?
        1.作为实际参数传递
        2.作为方法的返回值

匿名对象的简单演示

      new Car().num=5;

      new Car().clor="blue";

      两个new 是两个不同的对象,在堆内存中有不同的空间,相互不相互干扰。

匿名对象的使用

      1、当只使用一次时可以使用匿名对象。执行完毕到;后该对象就变成了垃圾。

      new Car().run();

      2、执行方法时,可以将匿名对象作为实际参数,传递进去。

十一、形参和实参

形参:形式参数(声明方法时,方法中声明的参数)

实参:实际参数(调用方法时,实际传给方法的参数)

注意:形参的改变,不会影响实参

上一篇:(19)Java基础 --数组

下一篇:(21)Java基础 --面向对象(2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值