MENU

Java-17

August 31, 2023 • Read: 92 • Java阅读设置

面向对象编程

Java提供的属性

Math.PI:接近于pidouble型的值,是圆的周长与圆的直径的比值。

面向过程(Procedure Oriented Programming)与面向对象(Object Oriented Programming)编程思想

它们都是一种编程思想面向对象是相对于面向过程而言的。

  • 面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。
  • 面向对象,是将功能封装进对象,强调的是具备功能的对象,以类/对象为最小单位,考虑谁来做。

编程思想,是在将解决问题的方案用代码实现时的统一思路。换句话说,是编写代码时的一种统一思想。
当然,编程不一定是编写解决方案的代码,因此这里的解决方案只是用来方便理解,实际上并不局限于解决方案,总之只要是用代码来实现就是编程。

  • 面向过程的编程思想是指,在将一个解决方案转换为代码实现时,思想是将解决方案中的每个解决步骤分为一个个过程,通过对一个个过程的编码来完成对这个解决方案的实现。
  • 面向对象的编程思想是指,在将一个解决方案转换为代码实现时,思想是将解决方案中的每个解决步骤及做这个步骤的对象抽离出来,通过对一个个具备解决某些解决步骤的对象的实现,来完成对这个解决方案的代码实现。

因此,面向可以理解为在编程时的以...为基础面向过程就是编程时以过程为基础,面向对象就是编程时以对象为基础。

面向对象实际上包含着面向过程的思想,但面向过程并不包含面向对象的思想。
可以这样类比:比如一堆人在做各种行为,面向对象就会将人类抽离出来,让人类具备所有这些行为,而人类实现具体这些行为时会存在面向过程的思想,就是一步步的完成这些行为,最后不同具体的人都通过人类来生成,实现一堆人在做各种行为。

面向对象的三大特征

  • 封装(Encapsulation)
  • 继承(Inheritance)
  • 多态(Polymorphism)

面向对象的思想概述

2023-08-31T07:54:12.png

类和对象

2023-08-31T07:55:50.png

类,是对一种类型的定义。
比如,可以将同时具备有五官、会说话等这些特点定义为一个类型,人类类型。

对象,也称为实例,是一个具体的存在。
比如,llluna是一个具体的人,是属于人类这个类的,因此具有这个类的所定义的所有内容,但这些内容的具体,五官是什么样的、会说哪种语言,是随具体的人不同而不同的。

类的实例化,就是创建属于该类的对象。

因此,类可以理解为一种模板,对象就是用具体内容填充了模板的具体的存在。

面向对象程序设计的重点是类的设计,因为具备功能的对象是依赖于的,先有了具备某类功能的类,才能有属于该类的对象,才能有具备某个具体功能的对象

设计类,就是设计类的成员。

这里主要说明两个成员(其他的成员后续学习后再补充):

  • 属性:理解为这个类具备的变量,比如人这个类有年龄、姓名等。
    属性也称成员变量field字段
  • 方法:理解为一个类具备的功能,比如人这个类能说话等。
    方法也称成员方法函数method

创建的格式为:[权限修饰符] 类名{成员}

类的创建当前只包括两部分,类的属性创建和类的方法的创建。
1 属性的创建
属性中所定义的变量,也称为成员变量
可以理解为,由一系列成员构成一种类型,通过对一个类型的成员设计来设计出一个,一个中的成员中的变量就是成员变量

局部变量是指定义在方法中的变量,通常所说的变量是指局部变量,通常是说main方法中的变量。

变量有其作用域。

  • 对于局部变量,即属于方法中的变量,其作用域就是该方法范围内。
  • 对于属性,其作用域可以从两方面讨论:

    • :类本身在定义其他成员时,可以适用其属性
    • 对象:该类的实例有自己的一套该类的成员,该对象可以使用其属性
      属性的使用会受到权限修饰符的限定,也就是有的属性只能中的成员用,有的属性不能用,有的属性对象和成员都能用。后续补充。

实际上方法成员包括本身都有权限修饰符,即会受到权限修饰符的限定,主要是限定作用域,也就是说java中所有都有作用域。

常用的权限修饰符包括:private, public, defaultprotected。后续补充。

2 方法的创建
方法本质上就是一段能够实现某种功能的代码。利用方法能够提高代码的可重用性。

定义方法的格式为:权限修饰符 [关键字] 返回值类型 方法名([参数1][,参数2][,...]){方法体},其中[]表示可选部分。

  • Java中规定了4种权限修饰符private, public, default, protecred,权限修饰符的作用是限定作用域,这里先都使用public,之后学习了再补充。
  • Java种规定了修饰方法的关键字static, final, abstract,这里先不考虑,之后学习了再补充。
  • 返回值类型就是指该方法返回的数据的数据类型

    • 若该方法不返回数据,则表示返回空数据,这种数据类型定义为void
    • 若方法返回数据,则在方法体中通过return关键字实现返回数据,格式为return 数据
  • return关键字,是用于方法体中结束方法的,其有两种形式:

    • return;:这种关键字后面没有接任何数据的形式,表示直接结束方法。
    • return 数据;:这种关键字后面接了数据的形式,表示通过返回一个数据结束方法。
  • 方法名即为标识符,满足标识符命名规则和规范即可。
  • 参数对于任何一个方法都是可选的,有多个参数时用逗号分隔,每个参数的格式为:数据类型 参数名
  • 方法体,实现功能的一段代码。

    • 方法体中可以使用成员变量
    • 方法体中不能定义方法。

对象

类的实例化就是创建对象。

对象实质上也是数据,类实质上也是类型,因此类可以理解为一种数据类型,创建对象或者说类的实例化,实际上等同于创建一个被赋值为一个类型的对象数据的变量。

创建对象也包含声明初始化两部分:

  • 声明:格式为类 变量名;
  • 初始化:格式为new 类()
    但对于对象,通常都是声明初始化同时进行,即类 变量名 = new 类();

创建对象后,该对象就具备了其类定义的所有内容,即该对象具有类中的属性和方法,当要对该对象所具有的某些属性赋值或者调用某些方法时,其格式为:对象.属性对象.方法

可以直接把类和其对应的对象和数组等同起来理解,类和对象等同于引用数据类型和对应的数据变量。
类中定义的属性同样具有默认值,即类的实例,或者说属于该类的对象没有对所属的类的某个属性赋值,该对象的这个属性值为该属性的默认值。

同属于一个类的两个对象,进行=赋值操作,结果就是指针指向同一块空间,即共享一个对象数据。

对象的内存解析也等同于数组的内存解析,这里仅仅涉及变量问题,并没有说明方法。

  • 对象对应的变量属于局部变量,在栈中的一个空间中。对象是new出来的,因此如果对象完成初始化,那么该空间存储一个内存地址,而真正的对象数据在中,属于该对象的所有变量即属性,都在空间中。
    2023-08-31T10:25:19.png

2023-08-31T10:12:04.png

匿名对象

  • 匿名对象本质上就是没有赋给变量的对象数据,即new 类()
  • 匿名对象是没有标识符的对象,因此对匿名对象的使用是一次性的。

总结

Java的代码是由构成的,本质是由变量方法构成,任何变量方法都有其作用域,要么由权限修饰符限定,要么直接限定在一个方法中。

是一个模板,因此其中的成员变量要么是设置的默认值,要么是由对象赋值,无法通过自己调用方法动态计算出一个值。

中的方法可以被其对象所使用,因此在main方法中出现非static方法不能调用时,先创建对象,通过对象使用方法。
2023-09-01T08:42:16.png

练习

2023-09-01T08:14:30.png
2023-09-01T08:14:53.png

2023-09-01T08:15:13.png
2023-09-01T08:42:42.png

2023-09-01T08:58:08.png
2023-09-01T08:58:49.png

2023-09-01T12:52:17.png
普通版代码:
2023-09-01T12:51:44.png
改进版代码:
2023-09-01T13:11:13.png
2023-09-01T13:11:32.png
2023-09-01T13:11:47.png
2023-09-01T13:12:05.png

Last Modified: September 2, 2023