第一章 前言介绍
1 面向对象 与 面向过程的区别
- 都是一种思想,思维方式,思考问题的角度.
- 面向过程 : "关注实现过程|步骤,需要通过几步完成?"然后一步一步执行
- 面向对象 : "关注我该找谁来完成 ?“实现步骤不关注,只关注这个"谁”,他就是对象
- 面向对象是依托于面向过程的
2 面向对象优点
- 更贴合于显示生活中人们的思考角度
- 面向对象更贴合生活中管理者,面向过程更贴合与执行者
- 将复杂的问题简单化
第二章 类与对象
1 面向对象进行编程
1.1 分析
- 将程序与生活紧密联系
- 类 : 描述图纸|模板,抽象的事物
- 对象 : 描述生活中真实存在的事物|实例,具体的事物
- 先有类,才能根据类创建对象
1.2 类与对象的关系
- 特殊到一般,具体到抽象。
- 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
- 类是用于描述同一类形的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属
性。 - JDK提供了很多类供编程人员使用,编程人员也可定义自己的类。
1.3 模板|图纸类|javabean的定义:
注意: 一个方法的形参类型可以为自定义的引用数据类型(图纸类|Javabean类型)
public class 类名{
//属性--> 成员变量
public 数据类型 属性名 = 赋值;
public 数据类型 属性名;
//功能 --> 成员方法
public 返回值类型|void 方法名(参数列表){
方法体;
[return 返回值;]
}
}
public class Class001_Phone{
//属性 : 品牌,颜色,价格,尺寸
public String brand;
public String color;
public double price;
public double size;
//功能 : 打电话
public void call(){
System.out.println("从前有个人长得像电话,出门就被打了...");
}
}
1.4 思考:
- 手机能做什么? --> 打电话,打游戏,聊天… --> 动词 --> 成员方法(不加static修饰的成员方法) --> 功能
- 手机有什么特点|特征 --> 品牌,颜色,价格,尺寸… -->名词 --> 成员变量 --> 属性
1.5 测试类
手机测试类:
-
导包
不需要导包的类 :
1)java.lang包下的类
2)同包下的类 -
创建类型的引用|创建对象 new具有创建对象的能力
引用数据类型 引用 = new 引用数据类型(); -
使用
使用属性(赋值|获取值)
引用.属性名
使用功能
引用.功能名字(参数列表)public class Class002_PhoneTest{
public static void main(String[] args){
//创建类型的引用|创建对象 new具有创建对象的能力
Class001_Phone phone = new Class001_Phone();
//属性赋值
phone.brand=“华为”;
phone.color=“白色”;
phone.size = 5.5;
phone.price = 6999;//属性获取 System.out.println(phone.color); System.out.println(phone.brand); System.out.println(phone.size); System.out.println(phone.price); //使用功能 phone.call(); phone.call(); phone.call(); }
}
1.6 对象内存分析图
2 成员变量默认值
2.1引用数据类型 :
- null
2.2 基本数据类型 :
-
整数 : 0
-
小数 : 0.0
-
布尔 : false
-
字符 : 空字符 ‘\u0000’
3 面向对象实例
3.1 蛋糕师制作蛋糕
3.1.1 代码分析
- 蛋糕师制作蛋糕
分析 : 涉及到了几种事物
实体类 :
蛋糕类
属性 : 形状 口味 大小 价格
功能 : 展示细节(打印所有属性的值)
蛋糕师类
属性: 姓名 性别 等级
功能: 制作蛋糕
- 注意: 方法的参数与返回值类型都可以为任意类型
基本数据类型
引用数据类型(包括自定义的实体类)
3.1.2 蛋糕类
//蛋糕
class Cake{
//形状 口味 大小 价格
public String shape;
public String taste;
public int size;
public double price;
//展示细节(打印所有属性的值)
public void show(){
System.out.println(shape+"--->"+taste+"-->"+size+"-->"+price);
}
}
3.1.3 蛋糕师类
class Caker{
//姓名 性别 等级
public String name;
public boolean gender;
public int level;
//制作蛋糕
//返回值 : Cake蛋糕
//参数 : String shape,String taste,int size,double price
public Cake makeCake(String shape,String taste,int size,double price){
//制作蛋糕对象
Cake cake = new Cake();
cake.price = price;
cake.size = size;
cake.shape = shape;
cake.taste = taste;
return cake; //返回的是一个蛋糕对象的地址
}
}
3.1.4 测试类
public class Class001_Caker {
public static void main(String[] args) {
//蛋糕师
Caker caker = new Caker();
caker.name = "胡歌";
caker.gender = false;
Cake cake = caker.makeCake("椭圆形","火锅味",8,300);
cake.show();
}
}
3.2 冰箱装大象
3.2.1 代码分析
- 把大象装进冰箱一共分几步?
1.冰箱门打开
2.大象装进去
3.冰箱门关上 - 涉及到了几种事物 :
冰箱类
属性 : 品牌 颜色 大小
功能 : 开门 关门 存储大象
大象类
属性 : 品种 颜色 姓名
功能 :
3.2.2 冰箱类
//冰箱
class Fridge{
//品牌 颜色 大小
public String brand;
public String color;
public double size;
//开门 关门 存储大象
public void open(){
System.out.println("冰箱门打开了");
}
public void close(){
System.out.println("冰箱门关上了");
}
public void save(Elephant ele){
System.out.println("一头叫做"+ele.name+"的大象被装进冰箱了...");
}
}
3.2.3 大象类
//大象
class Elephant{
//品种 颜色 姓名
public String type;
public String color;
public String name;
}
3.2.4 测试类
public class Class001_ElephantTest {
public static void main(String[] args) {
//大象
Elephant ele = new Elephant();
ele.name="云云";
ele.type="亚洲象";
ele.color="白色";
//冰箱
Fridge fridge = new Fridge();
fridge.brand="海尔";
fridge.color="白色";
fridge.size=50;
//步骤
fridge.open();
fridge.save(ele);
fridge.close();
}
}