2021.07.07 Java 面向对象

面向对象与面向过程的区别

        两者都是一种思想,只是思维方式,思考问题的角度不同
        面向过程 : "我该如何实现???" 按照分析出来的实现步骤一步一步实现
        面向对象 : "我该找谁来实现???" 关注的就是对象,这个"谁",不关注过程
        面向对象是依托面向过程的

面向对象的优点

  1. 可以将复杂的问题简单化
  2. 更加贴合我们生活中的思考角度
  3. 面向过程更加适合执行者,面向对象更加适用于管理者角度

如何使用面向对象的思维方式进行编程:


            类 :  定义一系列对象的共性|图纸|模板
            对象 : 用来描述现实生活中真实存在的事物
            面向对象就是让程序与现实生活紧密联系
            三大特性: 封装  继承   多态

             类的定义

             

    自定义类|模板类|javabean:
        public class 类名{
            //成员变量 : 不被static关键字修饰的方法--> 实例变量
            修饰符 数据类型 变量名 = 赋值;

            //成员方法 : 不被static关键字修饰的方法--> 实例方法
            修饰符 返回值类型|void 方法名(参数列表){
                方法体;
                [return 返回值;]
            }
        }


        成员变量:


                    静态变量 : 被static修饰的变量为静态变量->类变量
                    实例变量 : 不被static修饰的变量为实例变量

        成员方法:


                    静态方法 : 被static修饰的方法为静态方法
                    实例方法 : 不被static修饰的方法

例如 :一个手机类,和测试手机类

   分析步骤:
        1.手机具有的特点|特征 : 属性|名字 颜色,品牌,尺寸,价格,摄像头个数...     -->成员变量|实例变量
        2.手机都能做什么: 功能|动词  打电话  打游戏  上网聊天 ,拍照  ....      -->成员方法|实例方法

手机测试类:
        1) 导包 : 指明当前类的位置
            import 包名.类名;
            位置:类的上面

            不需要导包的类:
                        1.java.lang包下的内容
                        2.同包下的类

        2) 创建类型的引用|变量--->创建对象 new具有创建对象能力
            数据类型 变量名 = new 数据类型();

        3) 使用
            引用.成员变量
            引用.成员方法()

跟随对象使用成员

public class Class002_PhoneTest {
    public static void main(String[] args) {
        //1.创建一个手机对象->描述生活中我自己正在使用的这一台手机
        Class001_Phone  p1 = new Class001_Phone();
        //2.成员变量
        p1.color = "白色";
        p1.brand = "华为";
        p1.size = 6.5;
        p1.money = 7000;  //mete40pro

        System.out.println(p1.color);
        System.out.println(p1.brand);
        System.out.println(p1.size);
        System.out.println(p1.money);

        //3.成员方法
        p1.call();
    }
}


// -----------------------------------不是同一个class文件,但是在同一个包下

public class Class001_Phone {
    //成员位置: 类中方法外
    //颜色,品牌,尺寸,价格
    public String color;
    public String brand;
    public double size;
    public int money;

    //打电话
    public void call(){
        System.out.println("从前有一个人长得像电话,出门就被打了!!!!");
    }
}

再例如

蛋糕师制作蛋糕
    涉及的事物:
        蛋糕
        蛋糕师
    模板类:
        蛋糕类
            1)属性: 形状  口味   奶油   价格
            2)展示 : 所有的属性打印
        蛋糕师类
            1) 属性: 姓名  性别  年龄   等级
            2) 功能: 制作蛋糕

注意:
        方法的返回值可以为任意类型
            基本数据类型
            引用 数据类型(自定义的引用数据类型)

public class Class003_CakeTest {
    public static void main(String[] args) {
        //蛋糕师
        Caker caker = new Caker();  //1) new Caker()   2)对象的地址赋值给了引用caker
        caker.name = "xxxx";

        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){ //shape = 椭圆形   taske = 冰淇淋  price = 10000
        //创建一个蛋糕
        Cake cake = new Cake();
        cake.shape = shape;
        cake.taske = taske;
        cake.price = price;
        //返回一个制作好的蛋糕对象
        return  cake; //0x00a
    }
}

注意:
        一个javabean模板类可以创建多个对象,根据需要使用
        匿名对象可以使用,但是只能在当前行使用一次

 //匿名对象 : 只能在当前行使用一次
        new Cake().show();
        new Cake().show();

注意:
        一个方法的形参类型可以为自定义的引用数据类型
        所以说方法的形参类型可以为任意类型(基本数据类型|引用数据类型
)

//国家类
class Country {
    public String countryName;
    public String hotel;
}

//其他类

class Other{
    public void orderHotel(Country country) {
        System.out.println("正在预定" + country.countryName + "的" + country.hotel);
    }
}

 对象内存分析图

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值