• 06-03 Java 面向对象思想概述、开发设计特征,类和对象的定义使用,对象内存图


    面向对象思想概述、开发设计特征

    1:面向对象思想
        面向对象是基于面向过程的编程思想。
        
        面向过程:强调的是每一个功能的步骤
        面向对象:强调的是对象,然后由对象去调用功能
        
    2:面向对象的思想特点
        A:是一种更符合我们思想习惯的思想
        B:可以将复杂的事情简单化
        C:将我们从执行者变成了指挥者
            
        举例:
            买电脑:
                面向过程:我的了解电脑--了解我自己的需求--找对应的参数信息--去中关村买电脑--讨价还价--买回电脑
                面向对象:我知道我要买电脑 -- 班长去给我买 -- 班长就买回来了
            洗衣服:
                面向过程:把衣服脱下--找一个盆--放点洗衣粉--加点水--把衣服扔进去--搓一搓--清洗衣服--拧干--晾起来
                面向对象:把衣服脱下--打开全自动洗衣机--扔进去--一键即可--晾起来
            吃饭:
                面向过程:去超市买菜--摘菜--洗菜--切菜--炒菜--盛起来--吃
                面向对象:上饭店吃饭,你--服务员(点菜)--厨师(做菜)--服务员(端菜)--吃
                
                家常事物,买洗衣机和去饭店太不划算了,所以,找个对象。
                但是,你不跟我好好学习,你将来4000,你对象8000。
                
    3:把大象装进冰箱
        面向过程:
            动作有哪些呢?
                A:打开冰箱门
                B:装进大象
                C:关闭冰箱门
                
            代码体现;
                class Demo {
                    public static void main(String[] args) {
                        /*
                        System.out.println("打开冰箱门");
                        //打开冰箱门的东西,我现在仅仅是为了演示,就写了一个输出语句
                        //其实,它可能需要做很多操作。
                        //这个时候代码就比较多一些了
                        //假设我要多次打开冰箱门,
                        //代码一多,每次都写一遍,麻烦不
                        //我们就应该用方法改进
                        
                        System.out.println("装进大象");
                        System.out.println("关闭冰箱门");
                        */
                        
                        //写了方法以后,调用就改变了
                        open();
                        in();
                        close();
                    }
                    
                    public static void open() {
                        System.out.println("打开冰箱门");
                    }
                    
                    public static void in() {
                        System.out.println("装进大象");
                    }
                    
                    public static void close() {
                        System.out.println("关闭冰箱门");
                    }
                }
        
        面向对象:
            我们怎么才能更符合面向对象思想呢?
                A:有哪些类呢?
                B:每个类有哪些东西呢?
                C:类与类直接的关系是什么呢?
                
            把大象装进冰箱的分析? (如何分析有哪些类呢?UML。名词提取法。)
                A:有哪些类呢?
                    大象
                    冰箱
                    Demo
                B:每个类有哪些东西呢?
                    大象:
                        进去
                    冰箱:
                        开门
                        关门
                    Demo:
                        main方法
                C:类与类直接的关系是什么呢?
                    Demo中使用大象和冰箱类的功能。
                    
            代码体现:
                class 大象 {
                    public static void in() {
                        System.out.println("装进大象");
                    }
                }
                
                class 冰箱 {
                    public static void open() {
                        System.out.println("打开冰箱门");
                    }
                    
                    public static void close() {
                        System.out.println("关闭冰箱门");
                    }
                }
                
                class Demo {
                    public static void main(String[] args) {
                        冰箱调用开门
                        大象调用进去
                        冰箱调用关门
                    }
                }
                
    4:开发,设计,特征
    面向对象开发
        就是不断的创建对象,使用对象,指挥对象做事情。
        
    面向对象设计
        其实就是在管理和维护对象之间的关系。
    
    面向对象特征
        封装(encapsulation)
        继承(inheritance)
        多态(polymorphism)

    类和对象的概述

    现实世界中是如何描述一个事物的呢?
        举例:学生
                姓名,年龄,性别...
                学习,吃饭,睡觉
                
        属性:该事物的描述信息
        行为:该事物能够做什么
        
    我们学习编程语言,是为了模拟现实世界的事物的。
    而我们学习的编程语言Java中最基本的单位是:类。
    所以,我们就应该把事物通过类来体现出来:
    由此,我们就得到了现实世界事物和类的对应关系:
    
    事物:                        类:    
        属性                        成员变量
        行为                        成员方法
        
        
    类:是一组相关的属性和行为的集合。是一个抽象的概念。
    对象:是该类事物的具体表现形式。具体存在的个体。
    
    举例:
        学生:类
        班长:对象

    类的定义:学生类

    /*
        事物:
            属性    事物的信息描述
            行为    事物的功能
        
        类:
            成员变量    事物的属性
            成员方法    事物的行为
            
        定义一个类,其实就是定义该类的成员变量和成员方法。
        
        案例:我们来完成一个学生类的定义。
        
        学生事物:
            属性:姓名,年龄,地址...
            行为:学习,吃饭,睡觉...
            
        把事物要转换为对应的类:
        
        学生类:
            成员变量:姓名,年龄,地址...
            成员方法:学习,吃饭,睡觉...
            
        成员变量:和以前变量的定义是一样的格式,但是位置不同,在类中方法外。
        成员方法:和以前的方法定义是一样的格式,但是今天把static先去掉。
        
        首先我们应该定义一个类,然后完成类的成员。
    */
    //这是我的学生类
    class Student {
        //定义变量
        //姓名//这里定义在类中方法外
    String name; //年龄 int age; //地址 String address; //定义方法 //学习的方法//这里没有static public void study() { System.out.println("学生爱学习"); } //吃饭的方法 public void eat() { System.out.println("学习饿了,要吃饭"); } //睡觉的方法 public void sleep() { System.out.println("学习累了,要睡觉"); } }

    类的使用:学生类

    /*
        在一个java文件中写两个类:一个基本的类,一个测试类。
        注意:文件名称和测试类名称一致。
        
        如何使用呢?
            创建对象使用。
            
        如何创建对象呢?
            格式:类名 对象名 = new 类名();
            
        如何使用成员变量呢?
            对象名.变量名
        如何使用成员方法呢?
            对象名.方法名(...)
    */
    //这是学生类
    class Student {
        //姓名
        String name; //null
        //年龄
        int age; //0
        //地址
        String address; //null
        
        //学习
        public void study() {
            System.out.println("学生爱学习");
        }
        
        //吃饭
        public void eat() {
            System.out.println("学习饿了,要吃饭");
        }
        
        //睡觉
        public void sleep() {
            System.out.println("学习累了,要睡觉");
        }
    }
    
    //这是学生测试类
    class StudentDemo {
        public static void main(String[] args) {
            //如何创建对象呢?
            //类名 对象名 = new 类名();
            Student s = new Student();
            
            //输出成员变量值
            //System.out.println(s.name);
            //System.out.println(s.age);
            //System.out.println(s.address);
            //如何使用成员变量呢?对象.变量名
            System.out.println(s.name+"---"+s.age+"---"+s.address);
            
            
            //给成员变量赋值
            s.name = "林青霞";
            s.age = 27;
            s.address = "北京";
            //赋值后的输出
            System.out.println(s.name+"---"+s.age+"---"+s.address);
            
            //调用方法。如何使用成员方法呢?对象名.方法名(...)
            s.study();
            s.eat();
            s.sleep();
        }
    }

    一个对象的内存图:

    两个对象的内存图

    三个对象的内存图----  两个引用指向同一个堆内存

  • 相关阅读:
    Data Lake_理解数据湖
    spire.Doc -Index was out of the range
    R6_ES在互联网公司应用案例汇总参考
    R5_ES读写流程
    R4_Elasticsearch Mapping parameters
    华强北二代悦虎1562M升级固件图文教程(详细多图文)
    MMI_UT洛达检测1562A软件使用,Airoha_SDK_UT使用(多图)
    悦虎144固件,151固件,华强北二代悦虎144固件,151固件,1562M芯片144固件,151固件
    CentOS7安装redis并配置外网可访问(局域网可参考)
    CentOS离线安装gcc环境(附安装包+图文并茂)
  • 原文地址:https://www.cnblogs.com/baiyangyuanzi/p/6806823.html
Copyright © 2020-2023  润新知