一 面向过程和面向对象的对比
面向对象:
面向过程,pop。面向对象oop。
二者都是一种思想,面向对象是相对于面向过程而言的。面向过程强调的是功能行为,以方法为最小单位。考虑的是怎么去做
面向对象是将功能封装进对象。强调的是具备了功能的对象。以类或者对象为最小单位。考虑是来做
比如: 钻木取火和打火机
三大特点:
封装:
核心思想就是“隐藏细节”、“数据安全”,将对象不需要让外界访问的成员变量和方法私有化,只提供符合开发者意愿的公有方法来访问这些数据和逻辑,保证了数据的安全和程序的稳定。所有的内容对外部不可见。
继承:
子类可以继承父类的属性和方法,并对其进行拓展。将其他的功能继承下来继续发展 。
多态:
同一种类型的对象执行同一个方法时可以表现出不同的行为特征。通过继承的上下转型、接口的回调以及方法的重写和重载可以实现多态。方法的重载本身就是一个多态性的体现。
三大思想:
面向对象思想从概念上讲分为以下三种:OOA、OOD、OOP
OOA:面向对象分析(Object Oriented Analysis)
OOD:面向对象设计(Object Oriented Design)
OOP:面向对象程序(Object Oriented Programming )
二 类和对象的关系
Java语言的基本元素: 类和对象
类(Class)和对象(Object)是面向对象的核心概念
1 类是对一类事物的描述,是抽象的概念上的定义。
包括:属性(有哪些特点)行为(能做什么)
对象是实际存在的该类事物的每个个体,因而也称之为实例。
二者之间的关系:类是对象的模板,对象是类的实体/实例(具体的个体)
2 万事万物皆对象
3 例子 <人>
人类=抽象概念的人,有胳膊有腿...
对象=实实在在存在的某个人,比如张三 老王
三 类与对象
创建对象的格式: 类名 对象名 = new 类名(); 调用成员变量格式: 对象名.成员变量名 调用成员方法格式: 对象名.成员方法名();
package com.itheima.object1;
public class Student {
// 属性 : 姓名,年龄
// 成员变量 : 和之前定义变量的格式一样
String name;
int age;
// 行为 : 学习
// 成员方法 : 和之前定义方法的格式一样,只是少了static
public void study() {
System.out.println("学习");
}
}
package com.itheima.object1;
public class TestStudent {
/*
创建对象的格式:
类名 对象名 = new 类名();
调用成员变量格式:
对象名.成员变量名
调用成员方法格式:
对象名.成员方法名();
*/
public static void main(String[] args) {
// 类名 对象名 = new 类名();
Student stu = new Student();
// 对象名.成员变量名;
System.out.println(stu.name); // null
System.out.println(stu.age); // 0
stu.name = "张三";
stu.age = 23;
System.out.println(stu.name); // 张三
System.out.println(stu.age); // 23
// 对象名.成员方法名();
stu.study();
// 全类名(包名 + 类名)
System.out.println(stu); // com.itheima.object1.Student@b4c966a
}
}
- 类必须编写在.java文件中;
- 一个.java文件中,可以存在N个类,但是只能存在一个public修饰的类;
- .java文件的文件名必须与public修饰的类名完全一直;
- 同一个包中不能有重名的类;
案例 :手机类
创建一个类,类名为Phone
编写Phone类的成员变量(字符串类型的品牌,整数类型的价格)
编写Phone类的成员方法(打电话,发短信)
package com.itheima.object2;
public class Phone {
// 品牌,价格
String brand;
int price;
// 打电话,发短信
public void call(String name) {
System.out.println("给" + name + "打电话");
}
public void sendMessage() {
System.out.println("群发短信");
}
}
package com.itheima.object2;
public class TestPhone {
public static void main(String[] args) {
// 1. 创建对象
Phone p = new Phone();
// 2.给成员变量赋值
p.brand = "苹果";
p.price = 6799;
// 3.打印赋值后的成员变量
System.out.println(p.brand + "..." + p.price);
// 4. 调用成员方法
p.call("阿强");
p.sendMessage();
}
}
封装: