面向对象和封装
面向对象
面向过程:当需要实现一一个功能的时候,每一个 具体的步骤都要亲力亲为,详细处理每一个细节。
面向对象:当需要实现-一个功能的时候,不关心具体的步骤,而是找-一个已经具有该功能的人。来帮我做事儿。
public class printArray {
public static void main(String[] args) {
int[] array = {10, 20, 30, 40, 50};
//要求打印格式为。[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类,
//其中有一个toString方法,直接就能把数組变成想要的格式的字符串中
System.out.println(Arrays.toString(array));
//}
}
举例
洗衣服:
- 面向过程:把衣服脱下来—>找一 个盆->放点洗衣粉->加点水—>浸泡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();//群发信息
}
}