面向对象-类与对象


什么是面向对象

    我们知道Java是面向对象的语言,经常听别人说”万物皆对象“,那么到底什么是面向对象呢?其实早在70年代IBM就提及了这个思想,且在Smaltalk语言中进行了应用。后来根据面向对象的设计思路,才形成了C++,而由C++则产生了Java。但是在面向对象设计之前,广泛采用的是面向过程,面向过程只是针对于自己来解决问题。面向过程的操作是以程序的基本功能实现为主,实现之后就完成了,也不考虑修改的可能性,面向对象,更多的是要进行子模块化的设计,每一个模块都需要单独存在,并且可以被重复利用,所以,面向对象的开发更像是一个具备标准的开发模式。

面向过程:一步一步执行,一次一次操作,每个步骤都是静态顺序执行的。就比做开车:第一步,先开车门;第二步,上车;第三步,系安全带;第四步,打火;第五步,汽车发动开始行驶;第六步,直行/左拐/右拐;第七步,到达目的地。每一个步骤又分许多小步骤,比如开车门需要多大力气,上车需要迈几步等等。

面向对象:以对象为核心,把任何事物比作是一个对象,形成模块化的结构来实现程序的最终目的。就拿开车来举例:把人看作是一个对象,把车看作另一个对象。人要去开车,怎么开呢?不去管,我现在只需要告诉车这个对象:“这个人要开着你去往哪里哪里”,至于你要怎么开,我不关心。这就是面向对象的主要思想。


本质:

    以面向对象的方式用类来组织代码,用对象封装数据。可以这样理解,面向过程强调过程,而面向对象强调结果。


类与对象的关系

    在现实社会中,是先有的对象,再有的类。比如说:先有的人这个对象,人呢又有好多,按肤色可分为:黄种人、白种人、黑种人;按国家又可分为上百种。因为这么多的对象确立了之后,才有了“人类”这个类。但是在Java中是完全与这个概念相反的,Java中是先有类,再有的对象。比如现在有一个人类(People class),在这个class中你才能声明这个类的共有属性,构写方法。根据这个类你才能创造出对象。并且,在Java中无论在写什么程序时,第一步肯定是要先创建一个类。在Java中,先有具体的对象,然后抽象各个对象之间象的部分,归纳出类,通过类再认识其他对象。

对象的概念:指具体的事物,把一些属性和方法放在一起,作为一个相互依存的整体,把这个整体叫做对象。属性是对象的特征,方法是对象的行为。
类的概念:把针对对象的抽象(抽象:抽出象的部分)叫做类。

    类和对象是面向对象编程思想中的核心与基础。类是作为对象的抽象而存在的,所有的对象都依据相应的类来产生,在面向对象的术语中,这个产生对象的过程称为“实例化”。类是用来描述一组具有相同特征对象的。类可以看成一类对象的模板,对象可以看成该类的一个具体的一个具体实例。类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所应有的静态和动态属性。


面向对象三大特征:

    ①封装(encapsulation)
    ②继承(extends)
    ③多态(polymorphism)


示例

package com.cnblogs.lxj.objectoriented;

/**
 * @packageName: com.cnblogs.lxj.objectoriented
 * @className: People
 * @description: 测试类与对象
 * @author: liuxiaojiang
 * @date: 2021/1/25
 */
public class People {

    private String name;    //姓名
    private String gender;  //性别
    private int age;        //年龄
    private String telephone;   //电话

    /**
     * @description: 学生方法
     * @author: liuxiaojiang
     * @date: 2021/1/25
     * @param name:
     * @param gender:
     * @param age:
     * @param telephone:
     * @return: java.lang.String
     **/
    public String student(String name,String gender,int age,String telephone){
       String str = "一名叫"+name+"的"+gender+"子年龄为"+age+",电话是:"+telephone;
       return str;
    }

    /**
     * @description: 主方法
     * @author: liuxiaojiang
     * @date: 2021/1/25
     * @param args:
     * @return: void
     **/
    public static void main(String[] args) {
        People people = new People();   //创建一个人类对象
        System.out.println(people.student("张三","男",22,"18888888888"));  //调用学生方法,生成一个叫张三的学生
    }

}

运行结果:

一名叫张三的男子年龄为22,电话是:18888888888

原文地址:https://www.cnblogs.com/joyfulcode/p/14309376.html