【Java】面向对象编程

请参考《Java入门轻松理解p263~p366》。

第七章 总结摘要

首先,学习面向对象的原因是为了防止源代码变得过长和复杂,开发人员无法完全理解它。

在面向对象和基本语法方面,无论是学习内容还是学习方式都完全不同。
因此,很多人使用它而不理解其本质。

・对象导向的定义
是指在开发软件时使用的组件化思想。

将现实世界的角色及其行为在计算机内的虚拟世界中重现,这是面向对象的本质。

在面向对象编程中,程序员将“职责(角色)”编写为代码以应用于各个组件。
这些职责包括“信息保持”和“操作”。
为了实现这些职责,对象具有“属性”和“操作”。

「属性」是指关于登场人物的信息的存储盒子
「操作」是指登场人物进行行动或动作的步骤

对象之间可以通过读取和写入属性以及调用操作来协同工作,以作为一个整体的程序运行。

・面向对象的三大功能
封装
继承
多态性
※本文不会对这些进行详细解释。

第8章 概要

在面向对象编程中,程序员的角色
①考虑每个对象应承担的责任,并定义属性和操作的类型和内容
②在虚拟世界中创建和移动每个对象。

如果想要展示在虚拟世界中运作的实体,可以使用“实例”这个词。此外,从类中生成实例的行为被称为实例化。

如果创建了一个角色的类,那么就需要一个指令该类如何运行的主类。

public class main {
    public static void main(String[] args) {
    }
}

在这本书中,我们以“勇者与魔法蘑菇之战”为例来编写代码,您可以参考它。(使用Hero类、Matango类和main类)

英雄类
• 类的声明方式

public class Hero {
}

・属性声明的方法 de

[名前] name(String型)
[HP]   hp(int型)

在面向对象中,我们使用方法来定义操作的声明方式。

    void sleep() {
        this.hp = 100;
        System.out.println(this.name + "は眠って回復した!");
    }

总结起来就是这个样子

public class Hero {
    String name;
    int hp;

    void sleep() {
        this.hp = 100;
        System.out.println(this.name + "は眠って回復した!");
    }

}

如果定义一个类,就可以将其作为类型来使用。
需要类类型变量的原因是为了从具有相同名称的实例中识别出特定的一个。

主要类
·实例生成方式

クラス名 変数名 = new クラス名();

将值赋给字段。

変数名.フィールド名 = 値;

最后调用方法并发出”指示”。

实际上试着运行一下

英雄職業

Hero.png

主要类

main.png

实际结果已经正确显示出来了。

总结一下,类和方法是基于明确的面向对象思想而创建的。将现实世界中的人、物和事件替换为类的概念来看待。

第九章的要点是

在这里,我们主要学习构造函数。


public class Hero {
    String name;
    int hp;

    void sleep() {
        System.out.println(this.name + "は眠って回復した!");
    }
    Hero(){
        this.hp = 100;

    }

}

添加Hero()方法如上所述。
Hero()方法具有以下特性:“在被new时,会自动执行在方法内部定义的处理”。
这种方法被称为构造函数。

因此,在main方法中不需要给HP赋初始值。

实际运行后发现初始HP为100。

main1.png

・被视为构造函数的条件
1. 方法名与类名完全相等
2. 方法声明中未写入返回值

还可以声明构造函数可以接受参数。

    Hero(String name){
        this.hp = 100;
        this.name = name;
    }

在主main方法中,当执行构造函数时,需要在创建对象时指定要传递的参数。

main2.png

可以看出名字里有写着“宇智波”。

我的感觉

由于我是Java初学者,因此以前对面向对象编程只是凭直觉进行操作。
即使在写这篇文章的时候,我也对其中的真实性产生了一些疑问,
不知道它到底是什么意思。
尤其是构造函数部分有很多模糊的地方,感觉总结得不够全面。
不过,我认为阅读书籍、写代码、试运行等比理解这些本质意义更重要,
我通过详细研读这本书,对之前凭直觉操作的一些内容有了一定程度的理解。
我认为通过更深入学习后面的章节,我可以掌握它。

bannerAds