1.面向对象介绍:
生活中我们解决问题是一系列的对象在一起打交道从而解决,我们希望写代码也能使用生活中的思想,下面举一些生活中的例子。
上图分别是考试的问题,和买手机的问题
考试问题:老师对象,试卷对象,学生对象在一起打交道从而将问题解决
买手机问题:顾客对象,售货员对象,手机对象,钱对象在一起打交道将问题解决
所以我们可以发现,生活中解决问题,就是一系列的对象在一起打交道将问题解决的,那写代码如果也能使用生活中的思想,编程就会变得简单了。
我们再用伪代码感受一下:
可以感受到,这个代码就算是完全不懂技术的人,也可以看懂在干什么事情,因为思想就是生活中的思想,这就是面向对象思想的好处
而且这种思想我们之前是接触过的,来看一个我们之前写过的代码
聊到这里有些同学可能会产生新的问题,这些对象都是 Java 提供好的,解决的问题有限,那我要解决的问题,Java 若是没有提供现成的,怎么办呢?
面向对象重点学什么?
-
自己设计对象
-
Java 无法为世界上所有的问题提供现成的对象,所以我们需要学习自己如何设计对象。
-
-
使用已有的对象
-
Java 中已有的对象,很多是我们开发中常用的,在 API 章节我们会详细给大家介绍。
-
2.类和对象
(1)类和对象的介绍

(2)类和对象的关系
-
依赖关系:需要根据类创建对象
-
数量关系:一个类可以创建出多个对象
3.类的组成

4.对象的创建和使用

package com.itheima.oop;
/*
类: 是一组相关属性和行为的集合, 将其理解是对象的一张设计图
对象: 根据类(设计图)创建出来的实体
关系: 根据类创建对象, 一个类可以创建出多个对象
------------------------------------------------------
类的组成:
1. 属性(名词) -> 成员变量, 成员变量跟之前定义变量的格式一样, 只不过位置发生了改变, 放在类中方法外.
2. 行为(动词) -> 成员方法, 成员方法跟之前定义方法的格式一样, 只不过去掉 static 关键字
类的设计思路:
问题: 设计图的本质是在做什么事情?
回答: 描述一件事物
举例:
1. 我之前有一个{学生}, 叫做[张三], 今年[23岁]了 [180的身高], 平时没啥特殊爱好, 就喜欢(吃饭)和(学习).
2. 前阵子我卖了一台[白色]的[海尔]{洗衣机}, 花了我[1999块钱], 老心疼了, 但是(洗衣服)和(甩干)确实方便了.
生活中描述一类事物, 通过名词和动词进行描述的
*/
public class Student {
// 姓名, 年龄
String name;
int age;
// 学习, 吃饭
public void study() {
int num = 10;
System.out.println("学习Java");
System.out.println(name);
System.out.println(num);
}
public void eat() {
System.out.println("吃饭");
System.out.println(name);
}
}
package com.itheima.oop;
public class StudentTest {
/*
测试类: 带有main方法的类
*/
public static void main(String[] args) {
// 创建对象: 类名 对象名 = new 类名();
Student stu1 = new Student();
System.out.println(stu1);
stu1.name = "张三";
stu1.age = 23;
// 使用对象: 对象名.变量名; 对象名.方法名();
System.out.println(stu1.name);
System.out.println(stu1.age);
stu1.study();
stu1.eat();
Student stu2 = new Student();
System.out.println(stu2);
stu2.name = "李四";
stu2.age = 24;
System.out.println(stu2.name);
System.out.println(stu2.age);
stu2.study();
stu2.eat();
}
}
5.细节补充
-
打印对象名可以看到对象的内存地址
-
例如:com.itheima.oop.Student@233a4c68
-
-
成员变量就算没有赋值也可以使用,使用的是系统分配的默认值

类的组成:属性、行为
属性:成员变量,指描述事物的名词
行为:成员方法,指描述事物的动词
创建对象格式:类名 对象名 = new 类名();
使用对象格式:对象名.变量名; 对象名.方法名();
6.类和对象练习
类的组成:属性、行为
属性:成员变量,指描述事物的名词
行为:成员方法,指描述事物的动词
创建对象格式:类名 对象名 = new 类名();
使用对象格式:对象名.变量名; 对象名.方法名();
package com.itheima.oop;
public class Phone {
String brand;
String color;
int price;
public void call(String name) {
System.out.println("给" + name + "打电话");
}
public void sendMessage() {
System.out.println("群发短信");
}
}
package com.itheima.oop;
public class PhoneTest {
public static void main(String[] args) {
Phone p1 = new Phone();
p1.brand = "小米";
p1.color = "白色";
p1.price = 4999;
Phone p2 = new Phone();
p2.brand = "华为";
p2.color = "黑色";
p2.price = 6999;
System.out.println(p1.brand + "---" + p1.color + "---" + p1.price);
System.out.println(p2.brand + "---" + p2.color + "---" + p2.price);
p1.call("张三");
p1.sendMessage();
p2.call("李四");
p2.sendMessage();
}
}
7.成员变量和局部变量的区别

类中位置不同
public class Student {
String name; // 成员变量
int age; // 成员变量
}
public class Test {
public static void main(String[] args) {
int num1 = 10; // 局部变量
}
}
public class Student {
public void method(){
int num2 = 20; // 局部变量
}
}
-
初始化值不同
-
成员变量: 有默认初始化值
-
局部变量: 没有,使用之前必须完成赋值
-
-
内存位置不同
-
成员变量:堆内存
-
局部变量:栈内存
-

-
生命周期不同
-
成员变量:随着对象的创建而存在,随着对象的消失而消失
-
局部变量:随着方法的调用而存在,随着方法的运行结束而消失
-
-
作用域:都在自己所归属的 {} 中有效
8.This关键字
(1)使用this区分重名问题
当局部变量和成员变量出现了重名的情况,Java 使用的是 就近原则,下面的代码运行起来,输出的结果为局部变量西域狂鸭
想要在 sayHello 方法中调用成员变量,可以加入 this 关键字

(2)this的作用
this的作用: 调用本类的成员
-
this.本类成员变量;
-
this.本类成员方法();
-
this.本类成员变量: 如果不涉及重名问题, this.可以省略不写
this.本类成员方法: this.可以直接省略不写
public class Person { int num = 10; public void print() { System.out.println("print..."); } /* method方法中省略了 this. */ public void method() { System.out.println(num); // System.out.println(this.num); print(); // this.print(); } }

223

被折叠的 条评论
为什么被折叠?



