面向过程&面向对象

  • 面向过程思想

    • 步骤清晰简单,第一步做什么,第二步做什么
    • 面向过程适合处理一些较为简单的问题
  • 面向对象思想

    • 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
    • 面向对象适合处理复杂的问题,适合处理需要多人协作的问题。
  • 对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统,但是具体到微观操作,依然需要面向过程的思路去处理

什么是面向对象

  • 面向对象编程(Object-Oriented Programming, OOP)

  • 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。

  • 抽象

  • 三大特性:

    • 封装
    • 继承
    • 多态
  • 从认识论角度考虑是先有对象后有类。对象,是具体的实物。类是抽象的,是对对象的抽象。

  • 从代码运行角度考虑是先有类后又对象。类是对象的模板。

类和对象的关系

  • 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物

    • 动物、植物、手机、电脑……
    • Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为。
  • 对象是抽象概念的具体实例

    • 张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。
    • 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。

创建与初始化对象

  • 使用new关键字创建对象

  • 使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。

  • 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:

    1. 必须和类的名字相同。
    2. 必须没有返回类型,也不能写void。
  • 构造器的作用:

    • new本质在调用构造方法
    • 初始化对象的值

注意点: 定义有参构造后,如果想使用无参构造,必须显示的定义一个无参的构造函数。

  • 在IDEA工具中,使用快捷键:alt + insert ,可以生成构造器。

案例

  类:
public class Person {
// 一个类即使什么都不写,它也会存在一个方法
//显示的定义构造器 String name; // 实例化初始值
// 1. 使用new关键字,必须要有构造器
// 2. 构造函数主要用来初始化值
// 下面构造器是无参构造器
// alt + insert 生成构造器
public Person(){
this.name = "名字";
} //有参构造:一旦定义了有参构造,无参构造就必须显示定义
public Person(String name){
this.name = name;
}
} 实例:
public static void main(String[] args) { // 类是抽象的,需要用new 实例化了一个对象
// 类实例化后会返回一个自己的对象
// new 实例化一个对象 Person person = new Person("小王");
System.out.println(person.name);
}

08Java基础之面向对象的更多相关文章

  1. [.net 面向对象编程基础] (11) 面向对象三大特性——封装

    [.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承. ...

  2. [.net 面向对象编程基础] (12) 面向对象三大特性——继承

    [.net 面向对象编程基础] (12) 面向对象三大特性——继承 上节我们说了面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低 ...

  3. [.net 面向对象编程基础] (13) 面向对象三大特性——多态

    [.net 面向对象编程基础] (13) 面向对象三大特性——多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...

  4. Python 基础 四 面向对象杂谈

    Python 基础  四  面向对象杂谈 一.isinstance(obj,cls) 与issubcalss(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls ...

  5. 自学Python之路-Python基础+模块+面向对象+函数

    自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python    1.1 自学Python1.1-简介    1.2 自学Python1.2-环境的 ...

  6. JAVA(一)JAVA基础/面向对象基础/高级面向对象

    成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...

  7. 二十. Python基础(20)--面向对象的基础

    二十. Python基础(20)--面向对象的基础 1 ● 类/对象/实例化 类:具有相同属性.和方法的一类人/事/物 对象(实例): 具体的某一个人/事/物 实例化: 用类创建对象的过程→类名(参数 ...

  8. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  9. 2018.3.5 Java语言基础与面向对象编程实践

    Java语言基础与面向对象编程实践 第一章 初识Java 1.Java特点 http://www.manew.com/blog-166576-20164.html Java语言面向对象的 Java语言 ...

  10. python基础,函数,面向对象,模块练习

    ---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? #  [] {} () None 0 2,位和字节的关系? # ...

随机推荐

  1. 鸿蒙 NEXT(二):API12 带来的变革与创新

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  2. C#程序的内存缓存

    C#程序可以使用IMemoryCache.IMemoryCache是.NET Core中内置的一个轻量级缓存实现,可以用于在内存中缓存数据,以提高应用程序的性能和响应速度.它支持通过键值对的方式缓存数 ...

  3. AI对低代码技术的影响

    一.开发效率革命的"双引擎" 在过去的数十年里,软件工程领域正在经历一场由低代码平台和人工智能技术共同驱动的效率革命.这两股技术浪潮虽源于不同的技术路径,却共同指向同一个战略目标: ...

  4. Mac Adobe Photoshop 2025 安装与激活保姆级教程

    为什么选择Photoshop? 作为全球顶尖的图像处理软件,Adobe Photoshop凭借其强大的功能和生态兼容性,成为设计师.摄影师.创意工作者的必备工具.本文以最新版Photoshop 202 ...

  5. ArkUI-X中Plugin生命周期开发指南

    ArkUI-X插件用于拓展ArkUI应用的能力,提供管理插件生命周期的能力.本文主要介绍Android平台的ArkUI-X插件生命周期的使用. Android平台创建ArkUI-X插件生命周期 在An ...

  6. Go语言中的并发操作

    并发与并行 并发:同一时间段内,执行多个任务(你在用微信和两个女朋友聊天) 并行:同一时刻,执行多个任务(你和你朋友都在用微信和女朋友聊天) Go语言中的并发通过goroutine实现.gorouti ...

  7. 官宣!Taier1.3新版本正式发布,新鲜功能抢先体验

    2022年11月7日,Taier1.3版本正式发布! Taier 是一个大数据分布式可视化的DAG任务调度系统,旨在降低ETL开发成本.提高大数据平台稳定性,大数据开发人员可以在 Taier 直接进行 ...

  8. 第k个数

    第K个数 给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数. 所用方法和基本原理 快速选择算法是基于快速排序思想的一种选择算法.其基本原理如下: ...

  9. LiteLLM - 统一接口调用100+ LLM模型

    :bullet_train: LiteLLM LiteLLM 是一个统一的接口层,支持调用100+种大语言模型(LLM),包括Bedrock.Huggingface.VertexAI.Together ...

  10. MySQL 03 事务隔离:为什么你改了我还看不见?

    事务就是要保证一组数据库操作,要么全部成功,要么全部失败.在MySQL中,事务支持是在引擎层实现的,这也是InnoDB取代MyISAM的重要原因之一. 隔离性与隔离级别 事务的四大特性:原子性.一致性 ...