重点!!!面向对象

面向过程与面向对象

面向过程和面向对象都是程序设计的一种风格(思想);

面向过程的程序思想

​ 面向过程编程是一种程序设计范式,它将程序分解为一系列的步骤或过程,每个过程依次执行以完成特定的任务。在面向过程编程中,数据和方法是分离的,程序主要关注解决问题的步骤和流程,而不是对象之间的交互。

  • 关注焦点是过程:过程就是操作数据的步骤。如果某个过程的实现代码重复出现,那么就可以把这个过程抽取成一个函数,这样就可以大大简化沉余代码,便于维护。
  • 是以函数(一个一个的功能)为结构进行代码组织
  • 相对于面向对象语言,扩展能力差,后期维护难度较大

面向对象程序思想

​ 面向对象编程(Object-Oriented Programming,OOP)是一种程序设计范式,它以对象为基本单元,将数据和操作数据的方法封装在对象中,通过对象之间的交互来实现程序的功能。面向对象编程强调的是对象的概念和对象之间的关系,使程序更易于理解、扩展和维护。

  • 关注焦点是:在计算机程序设计过程中,参照现实中事物,将事物的属性特征,行为特征抽象出来,用类来表示。
  • 以类为单位进行组织,每种事物都具备自己的属性和行为/功能类:一类问题/分类 String,Math,Array,Scanner······
  • 以类为模版实例化对象,通过对象之间的交换来实现某种功能
  • 是一种设计思维,适合解决复杂问题。代码扩展性强,可维护性高
public class 类名{

}

注:千万不要把面向过程和面向对象对立起来,他们是相辅相成的。面向对象离不开面向过程!

区别:面向过程适合简单的问题.

​ 面向对象适合复杂的问题,先宏观的分类设计,具体的某一个步骤落地时,有需要面向过程,他们是相辅相成的

类和对象(面向对象的核心概念)

类:

概念:是具有相同特征的事物的抽象描述,是对对象的概括和总结

类的结构

  • 变量:事物属性的描述(名词)

  • 方法:事物的行为(可以做的事情 动词)

  • 构造方法:初始化对象

  • :没有名字的一个代码块

  • 内部类:在类的内部定义的类

    类的声明格式
    [访问权限修饰符][修饰符]class{ }
    访问修饰符有两种public,无(默认)
    修饰符:final,abstract
    关键字class用来定义一个类
    Java类名的命名规范:
    类名首字母大写,见名知意,驼峰表示

对象:(Everything is an object)

概念:实际存在的该类事物的每个个体 ,也称为实例以类为模板在内存中创建的实际存在的实例

​ eg:人类-->一类群体 概念

​ 张三-->具体的人,对象

  • 同一个类的每个对象有不同存储空间

package day5;

import java.sql.SQLOutput;

public class Car {
/*
定义属性 成员变量 直接在类{} 中定义内容,称为类的成员
*/
String name;
String color;
int price;//不需要初始化
/*
定义方法 成员方法
*/
public void run(){
System.out.println("汽车行驶");
}
public void stop(){
System.out.println("汽车停止");
}
}
package day5;

public class TestCar {
public static void main(String[] args) {
Car car=new Car();//
//new这个运算符来创建一个对象。new的结果是一个对象的引用
//new以Car类为模板,块独立的空间在内存中开辟一空间,用来存储对象信息
/*
Car(类型)car(变量名)声明一个Car变量=[把右边的对象地址赋值给左边的变量,用变量在后面的程序中表示内存中的对象]
*/
car.name="宝马";
car.color="黑色";
car.run();
}
}

JavaSE什么是面向对象?的更多相关文章

  1. Javase系列之面向对象(一)

    作为一个Java程序员,我们每天做的事情就是OOP(面向对象),可以说万物皆对象,Java是一门面向对象的程序语言,鉴于基本的面向对象知识也是一个较为庞杂的模块,所以博主我准备用多篇文章去介绍Java ...

  2. javase(5)_面向对象

    一.概述 1.面向对象是一种思想,让我们由执行者变成指挥者,执行者是面向过程,指挥者是面向对象.例如人开冰箱门,开冰箱门这个动作应该属于门而不是人,冰箱自己最清楚门应该怎么开,人只是调用了冰箱的这个动 ...

  3. JavaSE (五)面向对象 -- 概述

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 目录 一.面向对象的主线 二.面向对象 VS 面向过程 三 . java最基本的两个要素 - 类和对象 ...

  4. JavaSE (六)面向对象 -- 类的结构

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 目录 一.属性(变量) 1.变量的分类: 二.方法 1.例子: 2.格式: 3.方法的说明: 4.ret ...

  5. JavaSE 面试题总结

    一. JavaSE 4 1. 面向对象的特征有哪些方面 4 2. String是最基本的数据类型吗? 4 3. super()与this()的区别? 4 4. JAVA的事件委托机制和垃圾回收机制 4 ...

  6. Java学习第一天

    Java学习第一天 对于网络管理员或者黑客必须知道的八个cmd命令 详情请参考:http://www.2cto.com/os/201608/533964.html          nbtstat  ...

  7. Android开发环境配置(win7_64bit)

    Android开发环境配置(win7_64bit) 目录 1.概述 2.Android开发涉及的技术 3.Android常用开发环境搭建 4.注意事项 >>看不清的图片可在新标签打开查看大 ...

  8. JavaSE回顾及巩固的自学之路(四)——————方法和数组,面向对象

    今天是2018.03.31,emmmmmm.好像距离上一次写Javase回顾总结已经好久好久过去,差一点就以为要停更了,哈哈哈.        其实呢,最近是真的好忙(额,这段时间觉得自己一直在学习) ...

  9. JavaSE入门学习21:Java面向对象之接口(interface)(二)

    一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.j ...

  10. JavaSE入门学习23:Java面向对象之构造方法

    学了JavaSE面向对象这一部分,也该对构造方法做一个总结了. 一构造方法 在多数情况下,初始化一个对象的终于步骤是去调用这个对象的构造方法. 构造方法负责对象的初始化工作,为 实例变量赋予合适的初始 ...

随机推荐

  1. redis cluster 的核心原理分析:gossip 通信、jedis smart 定位、主备切换

    节点间的内部通信机制 基础通信原理 redis cluster 节点间采取 gossip 协议进行通信 gossip:互相之间不断通信,保持整个集群所有节点的数据是完整的 而集中式是将集群元数据(节点 ...

  2. asyncio和aiohttp携程并发

    import asyncio from aiohttp import web import time async def process(): for i in range(10): print(&q ...

  3. Hadoop HDFS 3.2的部署

    之前写过HDFS 2.6的部署,最近项目中尝试使用最新的HDFS 3.2.1做离线存储,部署方式略有不同,所以这里再简单写一下,这里只涉及到存储因此不再配置yarn,只配置HDFS最基本的服务Name ...

  4. vscode使用ES6装饰器器语法

    1. react项目 配置 package.json 需要安装 npm i @babel/plugin-proposal-decorators 可能需要重启项目 { "babel" ...

  5. 基于IoT全链路实时质量-魔洛哥

    简介: 通过基于IoT的全链路实时质量,业务使用狄仁杰进行全链路埋点后,可一键接入魔洛哥平台,实现终端问题的实时感知和链路分析,以及智能终端系统业务场景的全链路实时质量.整体方案接入成本低(分钟级别接 ...

  6. [Caddy2] Caddyfile 概念预览

    结构 块: 所有的指令必须在 { } 块中,如果只有一个站点,则块标记可以省略. 全局的配置块可以放在最上方,其次是站点的配置块. 指令: 指令是服务于站点配置的关键词. 关键词和引号: 空格在 Ca ...

  7. VisualStudio 如何快速添加一个 Git Tag 推送

    在 VisualStudio 的团队管理功能,提供了方便的添加 Tag 的方法,可以新建一个 Tag 添加 Tag 信息,同时推送某个特定的 Tag 到服务器.配合推 Tag 打包 NuGet 的方法 ...

  8. 2018-6-30-dotnet-设计规范-·-抽象类

    title author date CreateTime categories dotnet 设计规范 · 抽象类 lindexi 2018-6-30 9:2:38 +0800 2018-06-30 ...

  9. MQTT GUI 客户端 可视化管理工具

    MQTT GUI 客户端 可视化管理工具 介绍 多标签页管理,同时打开多个连接 提供原生性能,并且比使用 Electron 等 Web 技术开发的同等应用程序消耗的资源少得多 支持 MQTT v5.0 ...

  10. 通过Ingress-nginx实现灰度发布---灰度发布(22)

    1.通过Ingress-nginx实现灰度发布 场景一: 将新版本灰度给部分用户 假设线上运行了一套对外提供 7 层服务的 Service A 服务,后来开发了个新版本 Service A' 想 要上 ...