面向对象编程

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;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值