# 认识Java和面向对象

# 什么是Java

# 为什么用Java

Java是一门编程语言. Minecraft是一个使用Java编写的游戏.

用Java编写游戏的最大好处就是能够较方便地构造出适用于其他系统的游戏, 例如有些玩家是Windows用户, 有些玩家是苹果电脑Mac OS用户, Mojang不至于为多个操作系统都单独做一份Minecraft, 只需要改变一下, 即可做出各个平台下的Minecraft游戏.
实际上Minecraft电脑版和手机版是完全不同的版本, 一个是Java编写的, 一个是C++编写的.

我们写插件也需要用Java, 因为服务端也是用Java写的, 只有使用Java才能自如地写插件.

# Java程序的运行

你可以注意到, 每个Minecraft玩家都避不开安装Java.
这是因为我们的电脑一开始是没有Java程序的运行环境(这个运行环境叫JVM)的, 所以我们没办法运行Java程序.
Java写出来的程序与其他语言有所不同, 最终的产品是class文件或者jar文件(其实jar就是一个压缩包里放了很多class), 而不是我们所常见的exe格式的文件.
安装Java相当于给电脑里放了JVM, 我们把class文件放进JVM里, 程序就可以运行了.

# 面向对象

# 类与对象

Java是一门有特点的编程语言, 最大的特点是面向对象. 那什么是对象?
确切的来说, 如果你想理解对象这个概念, 你要从哲学的角度去思考, 思考这其中自然的关系, 这跟编程开发没什么关系, 只要你想一想就能明白, 请细细品味.

我们生活中有很多事物构成, 我们拿地球上的生命举例子.
地球上有很多生命, 首先我们粗略地把它们分为动物(Animal)植物(Plant), 而动物与植物可以继续分为各种各样的类型, 比如猫(Cat)狗(Dog)可以看做是动物的两个分支.
现在把它们起个名字, AnimalPlantCatDog都叫做类. 我们身边有许多的猫, 比如你的邻居家可能会有只猫, 它们都属于猫(Cat)这个类.
也就是, Cat这个类有许多的对象.

通过上面这个例子, 你应该明白类与对象之间的关系了.
类(Class)就是一种类型, 这个类型可以有许多对象(Object).

# 再从MC的角度去理解类与对象

在MC的世界, 我们每个人都属于玩家(Player), 我们可以认为Player是个类, 那么服务器里有许多玩家, 那也就是有许多Player对象.

服务器里可以有许多世界(World), 我们也可以认为有许多World对象.
一个世界是由方块(Block)组成的, 那么一个世界里一定也有许多Block对象.

在编写插件时你应该意识到, MC是一个由对象组成的世界.
Java程序员有一句俗语叫“万物皆对象”, 那么, Minecraft是一款Java开发的游戏, 你也会发现Minecraft里也是“万物皆对象”.

# 方法

动物能吃东西, 动物可以睡觉, 那么我们可以认为Animal这个类里有种方法叫吃(eat)睡觉(sleep).
也就是可以粗浅的认为, 方法就是一个类对应的对象能做的事情.

# 类的继承

这是面向对象中最重要的一个性质之一, 继承.

这很好理解, Cat类所对应的对象, 从道理上来讲它也应该是Animal对象, 其实Cat就是Animal的子类.
那么, Cat类继承了Animal类.