zoukankan      html  css  js  c++  java
  • Java 面向对象编程介绍

    1. 面向对象的概念
    2. 类与对象的关系
    3. 封装

    面向对象

    • 面向过程: 强调的是过程(动作)

    • 面向对象: 强调的是对象(实体)

    面向对象的特点

    1. 面向对象就是一种常见的思想,符合人们的思考习惯;
    2. 面向对象的出现,将复杂的问题简单化;
    3. 面向对象的出现,让曾经在问题中的执行者,变成了对象中的指挥者.

    面向对象的三个特征: 封装 继承 多态

    类与对象的关系

    • 类: 对事物的描述

    • 对象: 该类事物的实例, 在 java 中通过 new 创建. 实际上, 对象的出现是为了封装一个事物所具备的数据.

    • 怎么描述事物呢?
      对于事物的描述通常只关注两方面:
      属性(通常是数值)
      行为(通常是动作,即函数)

    • 如何定义类?
      定义类其实就是在定义类中的成员,而成员包括:
      成员变量(即属性)
      成员函数(即行为)

    //例: 描述小汽车
    /*
    分析:
    1. 属性
        轮胎数
        颜色
    2. 行为
        运行
    */
    // 类
    class Car
    {
        int num; //轮胎数
        String color; //颜色
        void run() // 行为
        {
            System.out.println(num+"..."+color);
        }
    }
    
    class CarDemo
    {
        public static void main(String[] args)
        {
            // 在计算机中创建一个 car 的实例, 通过 new 关键字
            Car c = new Car(); // c 就是一个 类 类型的引用变量, 指向了该类的对象(实例)
                               // 类 类型的变量要么指向对象, 要么就是 null.
            c.num = 4;
            c.color = "red";
            c.run(); // 要使用对象中的内容可以通过 对象.成员 的形式来完成.
        }
    }
    

    对象的内存体现

    成员变量和局部变量的区别:

    1. 成员变量定义在类中,整个类中都可以访问;
      局部变量定义在函数, 语句, 局部代码块中, 只在所属的区域有效.

    2. 成员变量存在于堆内存的对象中;
      局部变量存在于栈内存的方法中.

    3. 成员变量随着对象的创建而存在, 随着对象的消失而消失;
      局部变量随着所属区域的执行而存在, 随着所属区域的结束而释放.

    4. 成员变量都有默认初始化值;
      局部变量没有默认初始化值.

    匿名对象

    • 定义: 没有名字的对象, 其实就是定义对象的简写格式.
    • 格式: new Car();
    • 使用方式:
      • 当对象对方法仅进行一次调用的时候, 就可以简化成匿名对象.
      • 匿名对象可以作为实际参数进行传递.

    基本数据类型数据参数传递图解

    引用数据类型参数传递图解

    封装 (Encapsulation)

    // 定义类
    class Person
    {
        int age;
        void speak()
        {
            System.out.println("age="+age);
        }
    }
    
    class PersonDemo
    {
        public static void main(String[] args)
        {
            Person p = new Person();
            p.age = 20; //直接访问该属性,存在安全隐患. 例如 p.age = -20; 不符合实际情况,属于错误的赋值
            p.speak();
        }
    }
    
    // 改进方法
    class Person
    {
        private int age; // 使用关键字 private, 私有化该属性,只在本类中有效, 即使创建对象, 也访问不到.
    
        public void setAge(int a) // 设置值
        {
            if(a>0 && a<130) // 可以在此处对赋值数据进行判断
                age = a;
            else
                System.out.println("错误的数据");
        }
    
        public int getAge() // 获取值
        {
            return age;
        }
    
        void speak()
        {
            System.out.println("age="+age);
        }
    }
    
    class PersonDemo
    {
        public static void main(String[] args)
        {
            Person p = new Person();
            p.setAge = 20; // 设置值的方式
            p.speak();
        }
    }
    
    
    • 定义: 是指隐藏对象的属性和实现细节, 仅对外提供公共访问方式.

    • 好处:

      • 隔离变化
      • 便于使用
      • 提高复用性
      • 提高安全性
    • 封装原则:

      • 把不需要对外提供的内容都隐藏起来
      • 把属性都隐藏, 提供公共方法对属性访问.
        备注: 对外提供方法的目的,是可以对属性可控. set 方法返回值类型 void, get 方法返回值类型和属性类型相同.
    • 关键字: private 是一个权限修饰符, 用于修饰类中的成员.
      **备注: **

      1. 私有的内容只在本类中有效, 即使创建对象, 也访问不到.
      2. 私有仅仅是封装的一种体现而已, java 最小的封装体是 函数. 另外, 类和框架也都是封装体.

    _参考资料:_ - [JavaSE 基础视频(毕向东)](https://www.bilibili.com/video/av3091992/index_4.html#page=5)
  • 相关阅读:
    用Python完成一个汇率转换器
    鸿蒙如何用JS开发智能手表App
    鸿蒙如何用JS开发智能手表App
    SAP Spartacus SplitViewComponent Migration 的一个具体例子
    SAP Spartacus B2B 页面 Popover Component 的条件显示逻辑
    SAP Spartacus 升级时关于 schematics 的更新
    SAP Spartacus B2B 页面 Disable 按钮的显示原理
    SAP Spartacus B2B 页面 Disable Confirmation 对话框的显示原理
    通过 Feature Level 动态控制 SAP Spartacus 的页面显示
    SAP Commerce Cloud Build Manifest Components
  • 原文地址:https://www.cnblogs.com/linkworld/p/7434634.html
Copyright © 2011-2022 走看看