“三妹,之前我们学习了 Java 中的基本方法,其实 Java 还有一种方法,本地方法,或者叫 native 方法,它与之前的方法有很大的不同。”我放下手中的手机,扭过脸来对三妹说。
“听起来挺有意思的。”三妹很期待。
“我会教你用 C语言实现一个 native 方法。”我继续说到,“C语言是另外一种编程语言,你可以点这个链接去了解和学习。让我们开始吧”
“三妹,之前我们学习了 Java 中的基本方法,其实 Java 还有一种方法,本地方法,或者叫 native 方法,它与之前的方法有很大的不同。”我放下手中的手机,扭过脸来对三妹说。
“听起来挺有意思的。”三妹很期待。
“我会教你用 C语言实现一个 native 方法。”我继续说到,“C语言是另外一种编程语言,你可以点这个链接去了解和学习。让我们开始吧”
“三妹,这一节,我们简单过一下 Java 中的包,也就是 package,这个一点就透,很好掌握。”我放下手中的雪碧,翻开笔记本,登上 GitHub,点开《二哥的 Java 进阶之路》,找到这篇「Java 中的包」,开始滔滔不绝起来。
“二哥,你等一下。”让我打开思维导图做一下笔记📒。
在前面的代码中,我们把类和接口命名为Person
、Student
、Hello
等简单的名字。
在团队开发中,如果小明写了一个Person
类,小红也写了一个Person
类,现在,小白既想用小明的Person
,也想用小红的Person
,怎么办?
“三妹,准备好了没,我们这节来讲 Java 封装,算是 Java 的三大特征之一,理清楚了,对以后的编程有较大的帮助。”我对三妹说。
“好的,哥,准备好了。”三妹一边听我说,一边迅速地打开了 XMind,看来一边学习一边总结思维导图这个高效的学习方式三妹已经牢记在心了。
封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。
数据被保护在类的内部,尽可能地隐藏内部的实现细节,只保留一些对外接口使之与外部发生联系。
其他对象只能通过已经授权的操作来与这个封装的对象进行交互。也就是说用户是无需知道对象内部的细节(当然也无从知道),但可以通过该对象对外的提供的接口来访问该对象。
“三妹,通过前面两篇,我们已经深入地了解了 Java 抽象类和 Java 接口,那这篇我们来重点说一下抽象类和接口之间的区别。”我放下手中的鼠标和键盘,转向右手边,对三妹说。
“好啊。我挺想总结一波的,也算是对抽象类和接口做个了结。”三妹回应到。
“三妹,今天我们继续来学习 Java 的三大特征之一:继承,之前学习抽象类的时候我们已经接触过这个概念,不过,我们今天我们来认真地聊一聊。”慢吞吞说完这句开篇词后,我对三妹做了一个打开 XMind 的手势提醒(其实就是瞎比划)。
“懂了,哥,我这就打开。”三妹一边说,一边打开了 XMind,开始正襟危坐了起来。
在谈 Java 面向对象的时候,不得不提到面向对象的三大特征:封装、继承、多态。三大特征紧密联系而又有区别,合理使用继承能大大减少重复代码,提高代码复用性。
“我们先来讨论一下为什么需要访问权限控制。其实之前我们在讲类和对象的时候有提到,今天我们来详细地聊一聊,三妹。”我开门见山地说,“三妹,你打开思维导图,记得做笔记哦。”
“好的。”三妹应声回答。
考虑两个场景:
场景 1:工程师 A 编写了一个类 ClassA,但是工程师 A 并不希望 ClassA 被其他类都访问到,该如何处理呢?
场景 2:工程师 A 编写了一个类 ClassA,其中有两个方法 fun1、fun2,工程师只想让 fun1 对外可见,也就是说,如果别的工程师来调用 ClassA,只可以调用方法 fun1,该怎么处理呢?
“在 Java 中,可以将一个类定义在另外一个类里面或者一个方法里面,这样的类叫做内部类。”我放下手中的枸杞杯,对三妹说,“一般来说,内部类分为成员内部类、局部内部类、匿名内部类和静态内部类。”
成员内部类是最常见的内部类,看下面的代码:
class Wanger {
int age = 18;
class Wangxiaoer {
int age = 81;
}
}
“二哥,你这明显加快了更新的频率呀!”三妹对于我最近的肝劲由衷的佩服了起来。
“哈哈,是呀,我要给广大的学弟学妹们一个完整的 Java 学习体系,记住我们的口号,学 Java 就上二哥的 Java 进阶之路。”我对未来充满了信心。
“那就开始吧。”三妹说。
定义抽象类的时候需要用到关键字 abstract
,放在 class
关键字前,就像下面这样。
abstract class AbstractPlayer {
}