跟着官方文档学Java_jdk1.8_(2)——系列

在这里插入图片描述

接着来看Java官方文档:
本文接续上一篇(1):https://blog.csdn.net/qq_38382925/article/details/113063151?spm=1001.2014.3001.5502
在这里插入图片描述
Getting Started是环境搭建,和第一个程序 ”Hello World“
就不多言。

1.学习Java语言

在这里插入图片描述

1.1 面向对象的概念(OOP)

在这里插入图片描述

1.一个对象是什么?

在这里插入图片描述
现实中的对象都有状态(state)和行为(behavior)。

举例:
一只小狗的状态:名字,颜色,品种,饥渴;
				  行为:叫,摇尾巴,取东西。

思考两个问题:
(1)对象的状态是什么?
(2)对象的行为是什么?

现实世界中对于对象的描述也可以用到面向对象的编程语言中来:
如上图所示。

程序中对象的Methods(方法)______现实中对象的行为。(有些编程语言也称之为函数functions)
程序中对象的Fields (域) ______现实中对象的状态。(有些编程语言也称之为变量variables)

注:看不同的翻译的书,有时很让人混乱。上面的method和field,function和variable。看这个官方文档,就比较清晰,界定也明了。可是我们通常在听到的是方法和变量混着说。可能不必太在意。混沌一点。
不过,如果想写书。可能就得严谨一点了。
本系列中,都采用官方词语。method和field。为了不麻烦。直接不翻译。以后遇到在不同语言中不同的语言,直接用英语单词好了。免得纠结,概念也混乱。

2.一个类是什么?

现实生活中,你经常发现同一类的对象。如,成千上万的自行车,它们相互独立,却有相同的模板和制造方式。每辆自行车,都是按相同的一系列图纸造的,因此它们的零部件相同。

在面向对象编程世界,我们说:一辆自行车,是许多自行车对象类的一个实例。
类是创造各个对象的蓝图。

如下,是用Java描述的一个自行车类。

class Bicycle {
//fields
    int cadence = 0;
    int speed = 0;
    int gear = 1;
//methods
    void changeCadence(int newValue) {
         cadence = newValue;
    }

    void changeGear(int newValue) {
         gear = newValue;
    }

    void speedUp(int increment) {
         speed = speed + increment;   
    }

    void applyBrakes(int decrement) {
         speed = speed - decrement;
    }

    void printStates() {
         System.out.println("cadence:" +
             cadence + " speed:" + 
             speed + " gear:" + gear);
    }
}

fields:cadence, speed, and gear表示对象的状态;
methods: changeCadence, changeGear, speedUp etc.定义如何与外部世界交互。

注:这个类中不包含有main()方法。因为它不是一个完整的应用程序,只是被用在软件中的一个类。
自行车类被用在其它类中。

如下,是创建自行车对象的过程。(关键字new)
BicycleDemo类创建了两个自行车对象 ,并调用了它们的方法。

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

        // Create two different Bicycle objects创建两个自行车对象
        Bicycle bike1 = new Bicycle();
        Bicycle bike2 = new Bicycle();

        // Invoke methods on those objects 调用对象的方法
        bike1.changeCadence(50);
        bike1.speedUp(10);
        bike1.changeGear(2);
        bike1.printStates();

        bike2.changeCadence(50);
        bike2.speedUp(10);
        bike2.changeGear(2);
        bike2.changeCadence(40);
        bike2.speedUp(10);
        bike2.changeGear(3);
        bike2.printStates();
    }
}

输出结果:
在这里插入图片描述

封装:Bundling code
好处:

  1. 模块化。
  2. 信息隐藏。
  3. 代码复用。
  4. 易插拔,易调试。

3.继承是什么?

不同种的对象会有许多相同的特点。
如图:不同种的自行车(山地车,公路车,双人车),都有齿轮,有速度等。
它们也有自己的特点。双人车有两座,两副把手,公路车有赛车把手,山地车的齿轮比更小等。

在这里插入图片描述
面向对象编程允许多个类从其它类中继承共有的状态和行为。
如上,Bicycle是SuperClass,而其余三种自行车是SubClass.

在Java中,每个类只有一个superclass。而superclass所有的subclass不受限制。

关键字:extends

class MountainBike extends Bicycle {
    // new fields and methods defining 
    // a mountain bike would go here
}

如上图,subclass有superclass的所有fields和methods。也可以拓展自己的fields和methods.
superclass中的代码,不会出现在subclass中。

4.一个接口是什么?

对象通过其内部的方法与外部世界交互。
方法形成对象与外部世界交互的接口。(interface)

接口中的方法,没有方法体。举例,如下:

interface Bicycle {

    //  wheel revolutions per minute
    void changeCadence(int newValue);

    void changeGear(int newValue);

    void speedUp(int increment);

    void applyBrakes(int decrement);
}

以一个类实现这个接口。如下,关键字:implements

class ACMEBicycle implements Bicycle {

    int cadence = 0;
    int speed = 0;
    int gear = 1;

   // The compiler will now require that methods
   // changeCadence, changeGear, speedUp, and applyBrakes
   // all be implemented. Compilation will fail if those
   // methods are missing from this class.

    void changeCadence(int newValue) {
         cadence = newValue;
    }

    void changeGear(int newValue) {
         gear = newValue;
    }

    void speedUp(int increment) {
         speed = speed + increment;   
    }

    void applyBrakes(int decrement) {
         speed = speed - decrement;
    }

    void printStates() {
         System.out.println("cadence:" +
             cadence + " speed:" + 
             speed + " gear:" + gear);
    }
}

接口形成类与外部世界连接的一个形式。这个连接,在编译时增强。
如果一个类实现某一接口,其源码中要实现接口中所有方法。

5.一个包是什么?

Java中,把一系列相关的类和接口,放在同一个包中。

6.练习题

Questions

  1. Real-world objects contain ___ and ___.
state, behavior
  1. A software object’s state is stored in ___.
fields
  1. A software object’s behavior is exposed through ___.
methods
  1. Hiding internal data from the outside world, and accessing it only through publicly exposed methods is known as data ___.
encapsulation 封装
  1. A blueprint for a software object is called a ___.
class
  1. Common behavior can be defined in a ___ and inherited into a ___ using the ___ keyword.
superclass, subclass,extends
  1. A collection of methods with no implementation is called an ___.
interface
  1. A namespace that organizes classes and interfaces by functionality is called a ___.
package
  1. The term API stands for ___?
Application Programming Interface

Exercises

  1. Create new classes for each real-world object that you observed at the beginning of this trail. Refer to the Bicycle class if you forget the required syntax.

  2. For each new class that you’ve created above, create an interface that defines its behavior, then require your class to implement it. Omit one or two methods and try compiling. What does the error look like?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中文版,平时开发超实用工具。 Java 2 Platform 软件包 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有类。 java.awt.color 提供用于颜色空间的类。 java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类。 java.awt.font 提供与字体相关的类和接口。 java.awt.geom 提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。 java.awt.im 提供输入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt.print 为通用的打印 API 提供类和接口。 java.beans 包含与开发 beans 有关的类,即基于 JavaBeansTM 架构的组件。 java.beans.beancontext 提供与 bean 上下文有关的类和接口。 java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 ......

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值