面向对象和封装

面向对象

面向过程:当需要实现一一个功能的时候,每一个 具体的步骤都要亲力亲为,详细处理每一个细节。
面向对象:当需要实现-一个功能的时候,不关心具体的步骤,而是找-一个已经具有该功能的人。来帮我做事儿。

  1. public class printArray {
  2. public static void main(String[] args) {
  3. int[] array = {10, 20, 30, 40, 50};
  4. //要求打印格式为。[10, 20, 30, 40, 50]
  5. //使用面向过程,每一个步骤细节都要亲力亲为。
  6. // System.out.print("[");
  7. //for (int i = 0; i < array.length; i++) {
  8. // if (i == array.length - 1) { //如果是最后一个元素
  9. //System.out.println(array[i] + "]");
  10. //} else { //如果不是最后一 个元素
  11. //System.out.print(array[i] + ",");
  12. //}
  13. //System.out.println("===========");
  14. //使用面向对象
  15. //找一个JDK给我们提供好的Arrays类,
  16. //其中有一个toString方法,直接就能把数組变成想要的格式的字符串中
  17. System.out.println(Arrays.toString(array));
  18. //}
  19. }

举例

洗衣服:

  • 面向过程:把衣服脱下来—>找一 个盆->放点洗衣粉->加点水—>浸泡10分钟->揉一 揉—>清洗衣服->拧—>晾起来
    ●面向对象:把衣服脱下来- ->打开全自动洗衣机—>扔衣服->按钮—>晾起来

区别:

●面向过程:强调步骤。
    ●面向对象:强调对象,这里的对象就是洗衣机。
特点
    面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。
    面向对象的语言中,包含了三大基本特征,即封装、继承和多态。

类和对象

环顾周围,你会发现很多对象,比如桌子,椅子,同学,老师等。桌椅属于办公用品,师生都是人类。那么什么是
类呢?什么是对象呢?

类概念

●类:是一组相关属性和行为的集合。可以看成是一 类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
现实中,描述一类事物:
●属性:就是该事物的状态信息。
●行为:就是该事物能够做什么。
举例:小猫。
属性:名字、体重、年龄、颜色。
行为:走、跑、叫。

对象概念

●对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性和行为。
现实中,一类事物的一个实例: 一只小猫。
举例:一只小猫。
行为:溜墙根走、蹦哒的跑、喵喵叫。

类与对象的关系

●类是对一类事物的描述,是抽象的。
●对象是一类事物的实例,是具体的。
●类是对象的模板,对象是类的实体。

类的定义

现实世界的一类事物:

  • 属性:事物的状态信息。
  • 行为:事物能够做什么。

Java中用class描述事物也是如此:

  • 成员变量:对应事物的属性
  • 成员方法:对应事物的行为

类定义格式

public class ClassName {
//成员变量
/成员方法
}

●定义类:就是定义类的成员,包括成员变量和成员方法。
●成员变量:和以前定义变是几乎是一样的。只不过位置发生了改变。在类中,方法外。
●成员方法:和以前定义方法几乎是-样的。只不过把static去掉,static的作用在面向对象后面课程中再详细讲解。

定义一个类,用来模拟学生”事物。其中就有两个组成部分:

属性(是什么)

姓名
        年龄
行为(能做什么) :
吃饭
        睡觉
        学习
对应到Java的类当中

成员变量(属性) :
String name; // 姓名
int age; //年龄
成员方法(行为) :
public void eat() {} //吃饭
public void sleep() {} //睡觉.
public void study() {} //学习

注意事项:
1.成员变量是直接定义在类当中的,在方特外边。
2.成员方法不要写static关键字。

public c1ass Student {
    //成员变量
    String name; //姓名
    int age;//年龄
    //成员方法
    public void eat() {
        System. out . println("吃饭饭! ");
    }
    public void sleep() {
        System. out . println("睡觉觉! ");
    }
    public void study() {
        System. out.println("学习! ");
    }
}

使用类

通常情况下,一个类并不能直接使用,需要根据类创建一个对象, 才能使用。
1.导包:也就是指出需要使用的类,在什么位置。
import包名称.类名称;
import cn. itcast. day06. demo01. Student;
对于和当前类属于同一个包的情况,可以省略导包语句不写。
2.创建,格式:
类名称对象名= new类名称();
Student stu = new Student();
3.使用,分为两种情况:
使用成员变量,对象名.成员变量名
使用成员方法:对象名.成员方法名(参数)
(也就是,想用谁,就用对象名点儿谁。)

往意事项:
如果成员变量没有进行赋值,那么将会有-个默认值,规则和数组一样。

  public static void main(String[] args) {
// 1.导包。
//我需要使用的Student类,和我自己Demo02Student位于同- -个包下,所以省略导包语句不写
//2.创建,格式:
//类名称对象名= new类名称();
//根据Student类,创建了一个名为stu的对象
 //改变对象当中的成员变量数值内容
//将右侧的字符串,赋值交給stu对象当中的name成员变量
        stu.name ="赵丽颖";
        stu.age = 18;
        System. out. println(stu.name); //赵丽颖
        System. out . println(stu.age); // 18
        System. out .println("==========");

    }
}

练习

定义一个类 模拟手机事物

属性:品牌、价格、颜色
行为。打电话、发短信
对应到类当中:
成员变量(属性)

  • String brand; //品牌
  • double price; //价格
  • String color; // 颜色

成员方法(行为) :

  • public void call(String who) {} //打电话
  • public void sendMessage() {} //群发短信

方法类

public class Phone {
//成员变量
    String brand; //品牌
    double price; //价格
    String color; //颜色
    //成员方法
    public void call(String who) {
        System. out . println("给" + who +"打电话");
    }
    public void sendMessage(){
        System. out . println("群发短信");
    }
}

main类

public class Demo01Phone0ne {
        public static void main(String[] args) {
//根据Phone类,创建一个名为 one的对象
//格式:类名称对象名= new类名称();
        Phone one = new Phone();
        System.out.println(one.brand); // null
        System.out .println(one.price); // 0.0
        System.out .println(one.color); // null
        System.out .println("=======");
        one.brand ="苹果"; 
        one.price = 8388.0;
        one.color = "黑色";
        System.out.println(one.brand); //苹果
        System.out.println(one.price);//8388.0

        System. out . println(one.color); //黑色
        System. out .println("=======");
        one.call( "乔布斯");//乔布斯
        one.sendMessage();//群发信息
    }
         }