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)
  • 相关阅读:
    tree命令详解
    rm 命令详解
    rename命令详解
    pwd命令详解
    mv命令详解
    mkdir命令详情
    find命令详解
    dockerfile中配置时区
    docker导入导出
    docker上传私有仓库报错
  • 原文地址:https://www.cnblogs.com/linkworld/p/7434634.html
Copyright © 2011-2022 走看看