2323
2424另外,面向对象开发的程序一般更易维护、易复用、易扩展。
2525
26- 相关 issue : [ 面向过程 :面向过程性能比面向对象高??] ( https://github.com/Snailclimb/JavaGuide/issues/431 )
26+ 相关 issue : [ 面向过程 :面向过程性能比面向对象高??] ( https://github.com/Snailclimb/JavaGuide/issues/431 ) 。
27+
28+ 下面是一个求圆的面积和周长的示例,简单分别展示了面向对象和面向过程两种不同的解决方案。
29+
30+ ** 面向对象** :
31+
32+ ``` java
33+ public class Circle {
34+ // 定义圆的半径
35+ private double radius;
36+
37+ // 构造函数
38+ public Circle (double radius ) {
39+ this . radius = radius;
40+ }
41+
42+ // 计算圆的面积
43+ public double getArea () {
44+ return Math . PI * radius * radius;
45+ }
46+
47+ // 计算圆的周长
48+ public double getPerimeter () {
49+ return 2 * Math . PI * radius;
50+ }
51+
52+ public static void main (String [] args ) {
53+ // 创建一个半径为3的圆
54+ Circle circle = new Circle (3.0 );
55+
56+ // 输出圆的面积和周长
57+ System . out. println(" 圆的面积为:" + circle. getArea());
58+ System . out. println(" 圆的周长为:" + circle. getPerimeter());
59+ }
60+ }
61+ ```
62+
63+ 我们定义了一个 ` Circle ` 类来表示圆,该类包含了圆的半径属性和计算面积、周长的方法。
64+
65+ ** 面向过程** :
66+
67+ ``` java
68+ public class Main {
69+ public static void main (String [] args ) {
70+ // 定义圆的半径
71+ double radius = 3.0 ;
72+
73+ // 计算圆的面积和周长
74+ double area = Math . PI * radius * radius;
75+ double perimeter = 2 * Math . PI * radius;
76+
77+ // 输出圆的面积和周长
78+ System . out. println(" 圆的面积为:" + area);
79+ System . out. println(" 圆的周长为:" + perimeter);
80+ }
81+ }
82+ ```
83+
84+ 我们直接定义了圆的半径,并使用该半径直接计算出圆的面积和周长。
2785
2886### 创建一个对象用什么运算符?对象实体与对象引用有何不同?
2987
@@ -37,12 +95,39 @@ new 运算符,new 创建对象实例(对象实例在堆内存中),对象
3795- 对象的相等一般比较的是内存中存放的内容是否相等。
3896- 引用相等一般比较的是他们指向的内存地址是否相等。
3997
40- ### 类的构造方法的作用是什么?
98+ 这里举一个例子:
4199
42- 构造方法是一种特殊的方法,主要作用是完成对象的初始化工作。
100+ ``` java
101+ String str1 = " hello" ;
102+ String str2 = new String (" hello" );
103+ String str3 = " hello" ;
104+ // 使用 == 比较字符串的引用相等
105+ System . out. println(str1 == str2);
106+ System . out. println(str1 == str3);
107+ // 使用 equals 方法比较字符串的相等
108+ System . out. println(str1. equals(str2));
109+ System . out. println(str1. equals(str3));
110+
111+ ```
112+
113+ 输出结果:
114+
115+ ```
116+ false
117+ true
118+ true
119+ true
120+ ```
121+
122+ 从上面的代码输出结果可以看出:
123+
124+ - ` str1 ` 和 ` str2 ` 不相等,而 ` str1 ` 和 ` str3 ` 相等。这是因为 ` == ` 运算符比较的是字符串的引用是否相等。
125+ - ` str1 ` 、 ` str2 ` 、` str3 ` 三者的内容都相等。这是因为` equals ` 方法比较的是字符串的内容,即使这些字符串的对象引用不同,只要它们的内容相等,就认为它们是相等的。
43126
44127### 如果一个类没有声明构造方法,该程序能正确执行吗?
45128
129+ 构造方法是一种特殊的方法,主要作用是完成对象的初始化工作。
130+
46131如果一个类没有声明构造方法,也可以执行!因为一个类即使没有声明构造方法也会有默认的不带参数的构造方法。如果我们自己添加了类的构造方法(无论是否有参),Java 就不会添加默认的无参数的构造方法了。
47132
48133我们一直在不知不觉地使用构造方法,这也是为什么我们在创建对象的时候后面要加一个括号(因为要调用无参的构造方法)。如果我们重载了有参的构造方法,记得都要把无参的构造方法也写出来(无论是否用到),因为这可以帮助我们在创建对象的时候少踩坑。
0 commit comments