返回顶部
首页 > 资讯 > 精选 >一张图搞定Java面向对象
  • 842
分享到

一张图搞定Java面向对象

2023-06-02 23:06:55 842人浏览 安东尼
摘要

刚开始学习Java的时候,一个人跌跌撞撞摸索着往前走,很多东西理解的也懵懵懂懂,后来实践的多了,才慢慢清楚;许多东西虽然很基础但是却很重要,是需要反复思考和加深理解的。头条号“一张图学Java”,分享一些归纳总结后的技术干货,一张图能搞定的

刚开始学习Java的时候,一个人跌跌撞撞摸索着往前走,很多东西理解的也懵懵懂懂,后来实践的多了,才慢慢清楚;许多东西虽然很基础但是却很重要,是需要反复思考和加深理解的。头条号“一张图学Java”,分享一些归纳总结后的技术干货,一张图能搞定的事,绝对不长篇大论。

大家都知道,Java面向对象是Java的一个核心,也是初学者的一个难点,所以我们从这里开始,Let’s Go !

一张图搞定Java面向对象

Java面向对象

面向对象(Oriented Object)

是相对于面向过程而言的,过程其实就是函数,对象是将函数和属性进行了封装。

(1)将复杂的事情简单化。

(2)面向对象将以前的过程中的执行者,变成了指挥者。

(3)面向对象思想是符合人们思考习惯的一种思想。

面向对象和面向过程区别

- 面向过程:事物比较简单,可以用线性的思维去解决。

- 面向对象:事物比较复杂,使用简单的线性思维无法解决。

- 共同点:都是解决实际问题的一种思维方式。解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系,方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理。

对象

接收消息的实体,一切皆为对象,对象都有属性和行为,对象都属于某个类,每个对象都是独一无二的。

创建对象的蓝图和模板

类的属性:数据抽象

类的方法:行为抽象

构造器(构造方法)

接口

抽象方法的集合

(1)作用:

- 能力,实现一个接口就代表具备了某方面的能力。

- 约定,一个类实现了接口就必须实现接口中的所有抽象方法否则要被声明为抽象类。

- 角色,一个类可以实现多个接口来扮演多种角色

(2)接口之间可以继承而且支持多重继承

(3)从Java 8开始接口中的方法允许有默认实现

(4)常见的接口用法

- 单方法接口(函数式接口):Lambda表达式、@FunctionalInterface

- 标识性接口

- 普通接口

- 常量接口(接口最不正确的用法)

Java面向对象语言的三大特点

- 继承:从已有类创建新类的过程。

父类(超类/基类):提供继承信息的类

子类(派生类):得到继承信息的类

- 封装:隐藏一切可隐藏的实现细节提供简单的编程接口。私有属性,公有方法。好处:将变化隔离;便于使用;提高重用性,安全性。

- 多态:

方法重写:子类对父类的方法给出自己的实现版本。

对象造型:用父类型的引用去引用子类对象。

成员

定义在类中。成员有两种:

(1)成员变量:其实对应的就是事物的属性。

(2)成员函数:其实对应的就是事物的行为。

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

(1)成员变量直接定义在类中。

局部变量定义在方法中,参数上,语句中。

(2)成员变量在这个类中有效。

局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。

(3)成员变量定义在堆内存中,随着对象的产生而存在,消失而消失。

局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放。

构造函数

用于给对象进行初始化 ,函数中的一种。构造函数是在对象创建时被调用的,而且 初始化动作只执行一次 。

特点:该函数的名称和所在类的名称相同。不需要指定返回值类型。该函数没有具体的返回值。

注意:在定义一个类的时候,如果没有定义一个构造函数,系统会自动生成一个无参构造函数,以便于该类对象的创建和初始化。如果类中自定了构造函数,那么默认的构造函数没有了。如果一个类中有多个构造函数,这些构造函数是以重载体现的。

构造代码块和构造函数的区别

构造代码块:是给所有的对象进行初始化 ,只要对象一建立就会调用这个代码块。

构造函数:是给与之对应的对象进行初始化。

创建一个对象内存中执行过程

Person p = new Person();

(1)将硬盘中指定位置的Person.class文件加载进内存。

(2)执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区分配了一个变量P。

(3)new。在堆内存中开辟一个实体空间,分配了一个内存首地址值。

(4)在该实体空间中进行属性的空间分配,并进行了默认初始化。

(5)对空间中的属性进行显示初始化。

(6)进行实体的构造代码块初始化。

(7)调用该实体对应的构造函数,进行构造函数初始化。

(8)将首地址赋值给p,p变量就引用了该实体。(指向了该对象)

this关键字

代表对象。就是所在函数所属对象的引用。哪个对象调用了this所在的函数,this就代表哪个对象。

this是方法(除静态方法外)中存在的隐式参数,所以在方法中使用this。

普通方法中,this总是指向调用该方法的对象。this.xx; (调用的是成员属性和成员方法)

构造方法中,this总是指向正要初始化的对象。this(...); (调用本类对应参数的构造函数)

注意:

(1)this调用构造函数,必须定义在构造函数的第一行。否则编译失败。

(2)this不能用于static修饰的方法。

static关键字

关键字,是一个修饰符,用于修饰成员(成员变量和成员函数)

在类中,用static声明的成员变量为静态变量,或者叫做:类属性,类变量, 从属于类,给对象分配的内存里没有。

它为类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显示初始化,

对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享。

可以使用“对象.类属性”来调用。不过,一般都是用“类名.类属性”。

static变量置于方法区中。

用static声明的方法为静态方法。

类名.方法名的方式调用。

在调用该方法时,不会将对象的引用传递给它,所以在static方法中,不可访问非static的成员。

在静态方法中,不能是用this和supper关键字。

成员变量和静态变量的区别

(1)成员变量所属与对象,所以也称为实例变量。

静态变量所属于类,所以也称为类变量。

(2)成员变量存在于堆内存中。

静态变量存在于方法区中。

(3)成员变量随着对象的创建而存在,随着对象被回收而消失。

静态变量随着类的加载而存在,随着类的消失而消失。

(4)成员变量只能被对象所调用。

静态变量可以被对象调用,也可以被类名调用。

所以,成员变量可以称为对象的特有数据,静态变量称为对象的共享数据。

静态代码块

就是一个有静态关键字标示的一个代码块区域。定义在类中。

作用:可以完成类的初始化 。静态代码块随着类的加载而执行,而且只执行一次。如果和主函数在同一个类中,优先于主函数执行。

静态代码块、构造代码块、构造函数同时存在时的执行顺序

静态代码块-->构造代码块-->构造函数。

继承

(1)类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模。

(2)提高代码的复用性。

(3)extends的意思是“扩展”。子类是父类的扩展。

(4)子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法)。

(5)Java中只有单继承,没有多继承。多继承会引起混乱,使得继承链过于复杂,系统难于维护。

(6)Java中的多继承,可以通过接口来实现。

(7)java.lang.Object是所有类的超类。

重载(overload)

方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。

同一个类,同一个方法名。

不同:参数列表不同(类型,个数,顺序不同)

只有返回值不同,不构成方法的重载。

方法重写(override)

在子类中可以根据需要对从父类中继承来的方法进行重写。

重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。

重写方法不能使用比被重写方法更严格的访问权限。(由于多态)
一张图搞定Java面向对象

--结束END--

本文标题: 一张图搞定Java面向对象

本文链接: https://lsjlt.com/news/231645.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 一张图搞定Java面向对象
    刚开始学习Java的时候,一个人跌跌撞撞摸索着往前走,很多东西理解的也懵懵懂懂,后来实践的多了,才慢慢清楚;许多东西虽然很基础但是却很重要,是需要反复思考和加深理解的。头条号“一张图学Java”,分享一些归纳总结后的技术干货,一张图能搞定的...
    99+
    2023-06-02
  • Java面向对象和类的定义
    本篇内容介绍了“Java面向对象和类的定义”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、面向对象面向对象是在程序中使用对象来映射现实中的...
    99+
    2023-06-15
  • python面向对象(一)
    面向对象 1.初始面向对象     面向过程:         一切以事务的发展流程为中心.     面向对象:         一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象     打比方:   面向过程  ...
    99+
    2023-01-30
    面向对象 python
  • java——面向对象详细介绍(一)
    1、什么叫面向对象?面向对象(Object-Oriented,简称OO)就是一种常见的程序结构设计方法。面向对象思想的基础是将相关的数据和方法放在一起,组合成一种新的复合数据类型,然后使用新创建的复合数据类型作为项目的基础。面向对象是一个很...
    99+
    2020-10-09
    java教程 面向对象
  • Java面向对象基础教学(一)
    目录1.如何定义类2.如何定义属性3.如何定义普通方法4.如何创建对象5.如何定义构造方法6.什么是可变参数,怎么用?总结1.如何定义类 语法: 访问修饰符 class 类名...
    99+
    2024-04-02
  • 带你轻松搞定Java面向对象的编程--数组,集合框架
    目录一、数组1.数组的定义2.数组的声明 3.数组的初始化二、集合概述三、Collection接口1.Collection接口概述2.集合框架的三个组件3.Iterator...
    99+
    2024-04-02
  • 一文读懂java中的面向对象
    这期内容当中小编将会给大家带来有关一文读懂java中的面向对象,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。无论面向对象还是面向过程, 这俩都是解决问题的思路而已, 只是角度不同.面向过程:强调解决问题的...
    99+
    2023-05-31
    面向对象 java ava
  • java面向对象——封装
    概述面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理...
    99+
    2021-02-06
    java入门 java 面向对象 封装
  • Java面向对象概述
    Java面向对象概述[@more@]  (如今的程序领域,大家都在说,面向对象OOP,但是真正能理解面向对象的含义的程序员却很少,究竟什么是对象,怎样面向对象)  一.面向对象:  1.何谓对象:在面向对象程序设计中,我们将问题空间中的元素...
    99+
    2023-06-03
  • Python面向对象编程(一)
    目录一、程序中定义类和对象1、 定义类2、 定义对象二、定制对象独有特征1、引入2、定制对象独有特征3、对象属性查找顺序4、类定义阶段定制属性三、对象的绑定方法1、类使用对象的绑定对...
    99+
    2024-04-02
  • Python面向对象编程 一
    一、类    面向对象是对函数进行分类和封装,其主要目的是提高程序的重复实用性,让开发更方便快捷。    在我们的认知中,我们会根据属性相近的东西归为一类。例如:鱼类,鱼类的共同属性是呼吸,卵生。任何一个鱼都在此鱼类基础上创建的。    定...
    99+
    2023-01-31
    面向对象 Python
  • Java 面向对象 之 抽象类 abstract
    转载于 : http://www.verejava.com/id=16992804621647 public class TestAbstract {public static&n...
    99+
    2023-06-02
  • java面向对象之多态
    多态的简单理解:student类继承了Person类,则student类的对象既是student又是person类多态性具有两种展现的形式:1.方法的多态性:(1)方法的重载:同一个方法可以根据传入的参数的类型或者个数的不同实现不同的功能(...
    99+
    2019-03-28
    java入门 java 面向对象 多态
  • 怎么定义Python面向对象
    本篇内容介绍了“怎么定义Python面向对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!面向对象类 - class对象class ...
    99+
    2023-06-02
  • 三张图带你搞懂JavaScript的原型对象与原型链
    对于新人来说,JavaScript的原型是一个很让人头疼的事情,一来prototype容易与__proto__混淆,二来它们之间的各种指向实在有些复杂,其实市面上已经有非常多的文章在...
    99+
    2024-04-02
  • 详解Java的面向对象和面向过程
    目录一. 面向对象1. 概念2. 特点二. 面向过程1. 概念2. 特点3. 面向对象与面向过程的对比三. 结语一. 面向对象 既然我们要学习面向对象,那首先得对其基本概念、特性、对...
    99+
    2023-05-20
    Java面向对象 Java面向过程
  • 一篇文章带你入门java面向对象
    目录一、继承示例:二、重载三、接口1、接口与类相似点:2、接口与类的区别:3、语法四、枚举1、定义2、迭代枚举元素3、在 switch 中使用枚举类总结一、继承 继承就是子类继承父类...
    99+
    2024-04-02
  • Java面向对象类和对象实例详解
    目录1 - Java面向对象学习的三条主线2 - 面向过程与面向对象3 - 面向对象的三大特征4 - 面向对象分析方法分析问题的思路和步骤5 - 面向对象的思想概述6 - 类和对象的...
    99+
    2024-04-02
  • Java面向对象:抽象类的学习
    本文介绍了抽象类的基本语法概念,什么是抽象类. Java中抽象类的语法,抽象类的特性 抽象类的作用(抽象类和普通类的区别) 用抽象类实现多态… 抽象类的学习 一.什么是抽象类二.抽象类语...
    99+
    2023-09-11
    java 学习 jvm
  • Java面向对象和内存分析图文详解
    一、Java类 类是面向对象编程中最基本的单位。 Java中的类包含三个内容,分别是: 属性 属性又叫成员变量。 属性用于定义类或类对象的数据(静态特征)。 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作