面向对象思想概述
什么是面向对象?
面向:
基本义:面对、朝向
引申义:注重、关注
比如,面向农村,面向未来,指的是关注农村、关注未来
对象:
世间一切的事物
面向对象思想
:
面向对象思想就是把关注点放在一件事或一个活动中涉及到的人或事物(也就是对象)上的思想(或思
维方式)
面向过程思想:
面向过程思想就是把关注点放在一件事或一个活动中涉及到的步骤(也就是过程)上的思想(或思维方
式)
面向对象和面向过程的区别
主要在于做事方式的不同,一个关注事物(对象),另一个过程
(步骤)
面向过程举例
面向过程关键字:步骤、过程
洗衣服: 面向过程的做法:打水
->
放衣服
->
放洗衣粉
->
揉搓
->
晾晒
面向对象举例
面向对象关键字:事物、对象
洗衣服:
面向对象的做法:
1.
用洗衣机洗;
2.
让洗衣店洗;
面向对象思想特点
是一种更符合人们思考习惯的思想
把复杂的事情简单化
把人们从执行者变成了指挥者
面向对象的程序开发
就是不断的找对象、使用对象、指挥对象做事情的过程 没有对象?创建一个!
面向对象思想特征
1.
封装(
encapsulation
)
2.
继承(
inheritance
)
3.
多态(
polymorphism
)
类与对象
现实中如何描述一个事物?
这是一部
iPhone X
手机,它能打电话,发短信,玩游戏
…
iPhone
:品牌
(brand)
X
:型号
(model)
打电话 :功能
发短信:功能
玩游戏 :功能
描述事物从两方面着手
属性
:如品牌、型号、价格等事物的状态(外在特征)
行为
:如打电话、发短信、玩游戏等事物的功能
面向对象的编程语言与现实生活是紧密联系在一起的,
Java
是一门面向对象的编程语言,所以,学习
Java
就要学会如何用编程语言描述现实事物
Java
中如何描述一个事物?
Java
中通过
“
类
”
来描述事物,
类主要由属性和行为构成。
类的概念
即归类,分类,是一系列具有相同属性和行为的事物的统称
属性
:品牌、型号、名称
…
行为
:打电话、发短信、玩游戏
抽象
把一系列相关事物共同的属性和行为提取出来的过程
抽象是面向对象思想的第四大特征
“
手机
”
是指一类事物的统称,是一个抽象概念,并不是某个具体事物
什么是对象?
某一类事物的某个具体存在
类和对象的关系
类
:属性和行为的集合,是一个抽象概念
对象
:是该类事物的具体体现,是一种具体存在
类的定义和使用
如何定义一个类?
定义类的过程,就是把一系列相关事物共同的属性和行为抽取出来的过程 事物的属性,在类中叫
成员
变量
事物的行为,在类中叫
成员方法
如何创建一个对象?
类名 对象名
=
new
类名
();
如何使用一个对象?
对象名
.
变量名
对象名
.
方法名
(
…
)
练习
定义一个手机类
Phone
成员变量
:
品牌
: brand
价格
: price
机主
: owner
运行内存
: runningMemory
成员方法
:
打电话
: call(String to);
发短信
: sendMessage(String to);
转账
: transferAccounts(String from, String to, double money);
查看手机信息
: desc();
package com.bigdata;
/**
* 手机
*/
public class Phone {
/**
* 品牌
*/
String brand;
/**
* 型号
*/
String model;
/**
* 运行内存
*/
int runningMemory;
/**
* 价格
*/
double price;public void call(String to) {
System.out.println("正在 call " + to);
}
@Override
public String toString() {
return "Phone{" +
"brand='" + brand + '\'' +
", model='" + model + '\'' +
", runningMemory=" + runningMemory +
", price=" + price +
'}';
}
}
package com.bigdata;
public class PhoneTest {
public static void main(String[] args) {
// 创建一个phone 对象
Phone phone = new Phone();
phone.brand = "华为";
phone.model = "P40";
phone.runningMemory = 8;
phone.price = 2;
System.out.println("phone = " + phone);
}
}
package com.bigdata;
/**
* 手机
*/
public class Phone {
// 变量 (属性)
/**
* 运行内存
*/
String runningMemory;
/**
* 价格
*/
double price;
// 方法 (行为)
/**
* 给某人发送短信
*
* @param to 接收人
* @param content 内容* @return 是否发送成功
*/
public boolean sendMessage(String to, String content) {
System.out.println("短信内容: " + content + ", 已成功发送给" + to);
return true;
}
@Override
public String toString() {
return "Phone{" +
"runningMemory='" + runningMemory + '\'' +
", price=" + price +
'}';
}
}
package com.bigdata;
public class PhoneTest {
public static void main(String[] args) {
// Phone phone = new Phone();
// Ctrl + Alt + V
// new Phone().var + Enter
Phone phone = new Phone();
phone.price = 8888;
phone.runningMemory = "16GB";
// 注释快捷键: Ctrl + /
phone.sendMessage("张国强", "Good good study, day day up!!!");
phone.sendMessage("孙克爱", "好的, 收到, 么么哒");
System.out.println("phone = " + phone);
}
}
成员变量和局部变量的区别
![](https://i-blog.csdnimg.cn/blog_migrate/82d022d2ec231dc3e00e5394df2a5f86.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f7348db8ec57a1c26cb6821ffe3e8edf.png)
注意事项
局部变量和成员变量重名时,采用就近原则
封装概述
Java
中哪些内容体现了封装?
方法、类
方法的封装性:将繁多的代码整合在一起,以一个方法的形式呈现,所以方法是一个封装体
类的封装性:现实事物的属性和行为都包含在了类中,所以类也是一个封装体
private
关键字
private
的基本概念
私有的,一种访问权限修饰符,用来修饰类的成员
特点
被修饰的成员只能在本类中访问 返回值类
型 方法名
(
参数列表
) { }
扩展
public
,公共的,访问权限修饰符,用来修饰类、成员变量、成员方法等,被修饰的内容可以在任意类中
访问
案例:
private
修饰成员变量
需求:
给
Phone
类的成员变量用
private
修饰,然后在测试类中正确使用该成员变量
this
关键字
this
的基本概念
这,这个,表示本类对象的引用,本质是一个对象
特点
每一个普通方法都有一个
this
,谁调用该方法,
this
就指向谁
用法
案例:使用
this
完善
set
方法
需求:
Phone
类中的
set
方法的参数名应按规范命名
封装的关键
绝对不能让类中的方法直接访问其它类的数据(属性),程序仅通过对象的方法与对象的数据进行交
互。
构造方法
构造方法的基本概念
构建、创造,也叫构造器,用来帮助创建对象的方法,准确的说,构造方法的作用是初始化对象。
谁来创建对象?
new
关键字。
Java
中通过
new
关键字创建对象,并在内存中开辟空间,然后使用构造方法(构造器)完
成对象的初始化工作。
要求
1.
方法名必须与类名相同
2.
没有返回值
3.
没有返回值类型
注意事项
1.
若未提供任何构造方法,系统会给出默认无参构造
2.
若已提供任何构造方法,系统不再提供无参构造
3.
构造方法可以重载