7月7日面向对象编程
**
定义
面向对象 与 面向过程 之间 的区别:
都是一种思想,思维方式,思考问题的角度
面向过程 : “我该如何实现???” 按照分析出来的实现步骤一步一步实现
面向对象 : “我该找谁来实现???” 关注的就是对象,这个"谁",不关注过程
面向对象是依托面向过程的
面向对象的优点:
1.将复杂的问题简单化
2.更贴合现实生活中人们的思考角度
3.面向过程更适用于执行者,面向对象更适用于管理者角度
如何使用面向对象的思维方式进行编程:
类 : 定义一系列对象的共性|图纸|模板
对象 : 用来描述现实生活中真实存在的事物
面向对象就是让程序与现实生活紧密联系
三大特性: 封装 继承 多态
自定义类|模板类|javabean:
public class 类名{
//成员变量 : 不被static关键字修饰的方法--> 实例变量
修饰符 数据类型 变量名 = 赋值;
//成员方法 : 不被static关键字修饰的方法--> 实例方法
修饰符 返回值类型|void 方法名(参数列表){
方法体;
[return 返回值;]
}
}
成员变量:
静态变量 : 被static修饰的变量为静态变量->类变量
实例变量 : 不被static修饰的变量为实例变量
成员方法:
静态方法 : 被static修饰的方法为静态方法
实例方法 : 不被static修饰的方法
**
1.类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
2.类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。
3.方法用于定义该类或该类实例的行为特征和功能实现。方法是类和对象行为特征的抽
象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个
函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。
例子1
/*
去旅行案例:
订机票
查攻略
订酒店
涉及到了几种事物:
国家
秘书
自定义的模板类:
国家类
秘书类
国家类:
1.属性 : 国家名字 酒店名字
秘书类:
1.属性 : 秘书姓名 性别 年龄
2.功能 : 订机票 查攻略 订酒店 ...
注意:
一个方法的形参类型可以为自定义的引用数据类型
所以说方法的形参类型可以为任意类型(基本数据类型|引用数据类型)
*/
public class Class001_Travel {
public static void main(String[] args) {
//1.国家对象
Country country = new Country();
country.name = "日本";
country.hotel = "东京丽思卡尔顿酒店";
Country country2 = new Country(); //0x00a
country2.name = "迪拜";
country2.hotel = "帆船酒店";
//2.秘书对象
Secretary sec = new Secretary();
sec.name = "胡歌";
sec.gender = false;
//3.流程
sec.bookTicket(country2.name);
sec.strategy(country2.name);
//sec.bookHotel(country2.name, country2.hotel);
sec.bookHotel(country); //0x00a
}
}
//国家类
class Country{
//国家名字 酒店名字
public String name;
public String hotel;
}
//秘书类
class Secretary{
public String name;
public boolean gender; //1)true-->女 false-->男
//订机票
public void bookTicket(String countryName){
System.out.println(name+"正在为您预定一张去"+countryName+"的机票....");
}
// 查攻略
public void strategy(String countryName){
System.out.println(name+"正在为您查询去"+countryName+"玩耍的攻略..");
}
// 订酒店
// public void bookHotel(String countryName,String hotelName){
// System.out.println(name+"正在为您预定"+countryName+"的"+hotelName);
// }
public void bookHotel(Country country){ //Country country = 0x00a;
System.out.println(name+"正在为您预定"+country.name+"的"+country.hotel);
}
}
例子2
/*
把大象装进冰箱
1.打开冰箱门
2.大象装进去
3.冰箱门关上
事物:
1.冰箱
2.大象
javabean类:
1.冰箱类
1)属性: 品牌 大小 价格 颜色
2)功能: 开门 关门 存储大象
2.大象类
1)属性: 品种 姓名
*/
public class Class002_FridgeTest {
public static void main(String[] args) {
//1.大象
Elephant ele = new Elephant();
ele.name = "云云";
ele.type = "亚洲象";
//2.冰箱
Fridge fridge = new Fridge();
fridge.brand = "海尔兄弟";
fridge.color = "白色";
fridge.price = 10000;
//3.步骤
fridge.open();
fridge.saveElephant(ele);
fridge.close();
}
}
//大象类
class Elephant{
//品种 姓名
public String type;
public String name;
}
//冰箱类
class Fridge{
//1)属性: 品牌 大小 价格 颜色
public String brand;
public double price;
public String color;
//2)功能: 开门 关门 存储大象
public void open(){
System.out.println("打开冰箱门");
}
public void close(){
System.out.println("冰箱门关上");
}
//存储大象
public void saveElephant(Elephant elephant){
System.out.println("把一个"+elephant.name+"的大象装进冰箱");
}
}
例子3
/*
蛋糕师制作蛋糕
涉及的事物:
蛋糕
蛋糕师
模板类:
蛋糕类
1)属性: 形状 口味 奶油 价格
2)展示 : 所有的属性打印
蛋糕师类
1) 属性: 姓名 性别 年龄 等级
2) 功能: 制作蛋糕
注意:
方法的返回值可以为任意类型
基本数据类型
引用 数据类型(自定义的引用数据类型)
*/
public class Class003_CakeTest {
public static void main(String[] args) {
//蛋糕师
Caker caker = new Caker();
caker.name = "老裴";
Cake cake = caker.make("椭圆形","冰激凌",10000);
cake.show();
}
}
//蛋糕类
class Cake{
//形状 口味 奶油 价格
public String shape;
public String taske;
public double price;
//展示
public void show(){
System.out.println(shape+"-->"+taske+"-->"+price);
}
}
//蛋糕师
class Caker{
//姓名 性别 年龄 等级
public String name;
public int level;
//制作蛋糕
//返回值: 一个蛋糕--> 蛋糕对象 --> Cake
//参数: 形状,口味,价格String shape,String taske,double price
public Cake make(String shape,String taske,double price){
//创建一个蛋糕
Cake cake = new Cake();
cake.shape = shape;
cake.taske = taske;
cake.price = price;
//返回一个制作好的蛋糕对象
return cake;
}
}