01. 面向对象概述
-
面向过程
- 所有事情都是亲力亲为
-
面向对象
- 事情分给不同对象来处理
-
面向对象思想特点
- 以人的思维方式来思考
- 更简单
-
面向对象的特征
-
封装
-
继承
-
多态
-
02. 类与对象
03.类的定义
-
组成
- 成员变量
- 成员方法
-
语法
/** * 电脑类 * @author 海锋 * */ public class Computer { //成员变量 String brand; String color; double price; /** * 打游戏 * @param hours */ public void playGame(int hours) { System.out.println("打了"+ hours + "小时"); } }
04. 学生类的定义
-
代码实现
/** * 学生类 * @author 海锋 * */ public class Student { //成员变量 String name; String sex; int age; int stuNo; //成员方法 /** * 吃饭 */ public void eatMeat() { System.out.println(name+"吃肉了"); } /** * 学习 */ public void study() { System.out.println(name+"学习了"); } }
05. 学生类的使用
-
创建对象
- 类名 对象名 = new 类名();
-
使用成员
- 使用成员变量
- 获取成员变量
- 数据类型 变量名 = 对象名.属性名;
- 设置成员变量
- 对象名.属性名 = 值;
- 获取成员变量
- 使用成员方法
- 数据类型 变量名 = 对象名.方法名(值);
- 使用成员变量
-
代码实现
/** * 学生类的使用 * @author 海锋 * */ public class Demo01_Object { public static void main(String[] args) { //创建对象 Student stu = new Student(); stu.name = "张三"; //调用对象中的方法 stu.eatMeat(); stu.study(); } }
06. 内存图解之一个对象
-
代码实现
/** *电脑类的调用 * @author 海锋 * */ public class Demo02_Object { public static void main(String[] args) { //创建电脑对象 Computer computer1 = new Computer(); computer1.brand = "华为"; computer1.color = "银灰色"; computer1.price = 10000; System.out.println("品牌 : " + computer1.brand); System.out.println("颜色:" + computer1.color); System.out.println("价格: " + computer1.price); computer1.coding(); } }
-
内存图解
07. 内存图解之两个对象
-
代码实现
Computer computer1 = new Computer(); computer1.brand = "华为"; computer1.color = "银灰色"; computer1.price = 10000; System.out.println("品牌 : " + computer1.brand); System.out.println("颜色:" + computer1.color); System.out.println("价格: " + computer1.price); Computer computer2 = new Computer(); computer2.brand = "小米"; computer2.color = "黑色"; computer2.price = 5000; System.out.println("品牌 : " + computer2.brand); System.out.println("颜色:" + computer2.color); System.out.println("价格: " + computer2.price);
08. 内存图解之三个引用
-
代码实现
Computer computer1 = new Computer(); computer1.brand = "华为"; computer1.color = "银灰色"; computer1.price = 10000; Computer computer2 = new Computer(); computer2.brand = "小米"; computer2.color = "黑色"; computer2.price = 5000; Computer computer3 = computer2 ; computer3.brand = "荣耀"; System.out.println("品牌 : " + computer1.brand);//华为 System.out.println("品牌 : " + computer2.brand);//荣耀 System.out.println("品牌 : " + computer3.brand);//荣耀
09. 成员变量和局部变量的区别
- 定义位置
- 成员变量
- 类中方法外
- 局部变量
- 方法中
- 成员变量
- 内存位置
- 成员变量
- 属于对象,而对象在堆中,也在堆中
- 局部变量
- 属于方法,而方法在栈中,也在栈中
- 成员变量
- 生命周期
- 成员变量
- 随着对象的创建而创建,随着对象的销毁而销毁
- 局部变量
- 随着方法的执行而创建,随着方法的结束而销毁
- 成员变量
- 值初始化
- 成员变量,如果开发人员没有给定初值,系统会默认给定初值
- 局部变量,如果开发人员没有给定初值,系统不会默认给定初值,需要在使用之前由开发人员指定初值
10. 方法传递参数是自定义类
-
代码实现
public static void main(String[] args) { Product p = new Product(); p.productName = "电视"; p.count = 3; p.price = 1000;//6月18日 System.out.println(p.price);//1000 //恢复原价 changePrice(p.price); System.out.println(p.price);//1000 System.out.println("------------"); changePrice(p); System.out.println(p.price); } public static void changePrice(double price) { price = 2000; } public static void changePrice(Product p) { p.price = 2000; }
11. UML建模
-
第一层是类名
-
第二层是属性
-
第三层是行为
-
使用PowerDesigner
-
根据UML生成java代码
12. 匿名对象
-
概念
- 没有引用的对象
-
代码实现
- 需求
- 英雄救美留名
- 英雄救美不留名
/** * 匿名对象 * 需求:英雄救美 * @author 海锋 * */ public class Person { String name; public void saveBeatifuiGirl() { System.out.println("救了一个美女"); } } public class Demo04_Object { public static void main(String[] args) { Person p1 = new Person(); p1.name = "邱文豪"; System.out.print(p1.name); p1.saveBeatifuiGirl(); System.out.println("-----------------"); new Person().saveBeatifuiGirl(); } }
- 需求
-
总结
- 普通对象,可以被调用多次
- 匿名对象,只能被调用一次,会被jvm及时回收
13. 封装的概述
-
概念
- 隐藏实现细节,对外提供访问方式
- 方法的封装、类的定义
-
封装好处
- 提高代码复用性
- 提高安全性
-
封装原则
p1.name = “邱文豪”;
System.out.print(p1.name);
p1.saveBeatifuiGirl();
System.out.println("-----------------");
new Person().saveBeatifuiGirl();
}
} -
总结
- 普通对象,可以被调用多次
- 匿名对象,只能被调用一次,会被jvm及时回收
13. 封装的概述
- 概念
- 隐藏实现细节,对外提供访问方式
- 方法的封装、类的定义
- 封装好处
- 提高代码复用性
- 提高安全性
- 封装原则
- 将不需要对外直接暴露的代码封装