1x0 引子
这是我不想讲的一节,但是还真绕不过去,因为他太抽象了却又很重要。我不打算按传统的概念堆积来教学,正头疼呢,突然发现又到月底了,欠钱的该还钱了,于是给老王发了一条微信:
又到月底了,老王你也知道,我零花钱花的差不多了,欠我的那一个亿,该还我了吧。
然后又想了想,老李也欠我两个亿:
又到月底了,老李你也知道,我零花钱花的差不多了,欠我的那两个亿,该还我了吧。
猛然想起老刘,老张,老马,老安都欠我一堆钱,一个个打字太费劲了,于是,把重复的信息*精简(抽象)成了这样一*条(类),复制进了剪贴板:
又到月底了,你也知道,我零花钱花的差不多了,欠我的那个亿,该还我了吧。
给老刘*发(调用)的时候*粘贴进去(实例化),然后写上老刘和他欠的三个亿;
又到月底了,老刘你也知道,我零花钱花的差不多了,欠我的那三个亿,该还我了吧。
给老张,老马,老安发的时候都是这样,不到一分钟就发完了。舒舒服服睡了一觉,醒来之后回忆起来,老金把我香蕉借走了,还没还我呢。打开微信粘贴了进去,写上老金和他欠的香蕉:
又到月底了,老金你也知道,我零花钱花的差不多了,欠我的那香蕉个亿,该还我了吧。
觉得太别扭了,之前那个模板不适用了。于是在之前的基础上,修改了几个句子(继承自父类,重写了几个方法):
又到月底了,老金你也知道,我香蕉吃的差不多了,欠我的那个香蕉,该还我了吧。
上面毫无营养的文章简要介绍了 Java 中面向对象编程的 类,对象 和 继承 。
1x2 类和对象
人们在遇到一类类似的问题的时候,发现解决他们有许多相似的地方。爱发明工具的人们就把解决这一类问题的通用过程抽象成一个类。就像上面的例子,每一次发讨债的微信都有一部分相同的文字,我们就把他抽象出来变成模板。在 Java 中把通性通法抽象出来叫做 类 。具体给每个人发的时候就把模板粘贴进来修改使用。在 Java 中就是把类实例化为 对象 。这种思维叫做面向对象编程,缩写 OOP。再来个经典的比喻:人抽象成人类;人是人类的实例;人类实例化成每个人。仔细品味一下。
定义类
[修饰符] class 类名 {
零到多个构造器定义
零到多个成员变量
零到多个方法
}//[] 代表可省略
在上面的格式中,修饰符可以是 public , final , abstract ,或者干脆省略(此处混眼熟,日后介绍)。类通过构造器来执行实例化。方法用于定义该类或该类的实例的行为特征。Java 通过 new 关键字来调用构造器,从而返回该类的实例。如果没有在程序中定义构造器,系统会提供一个默认的构造器。
定义成员变量
定义成员变量的语法格式如下:
[修饰符] 类型 成员变量名 [= 默认值]; //[]代表可省略
- 修饰符:修饰符是 public protected private static final ,此处混眼熟即可。
- 类型:类型可以是Java 语言允许的任何数据类型,包括基本类型(如 int )和引用类型(如 String)
- 成员变量名:自己起个名字,建议由一个或多个有意义的单词连缀而成,第一个单词首字母小写,后面每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。
- 默认值: 定义成员变量还可以指定一个可选的默认值。
定义方法
[修饰符] 方法返回值类型 方法名 (形参列表){
由零到多条可执行语句构成的方法体
} //[]代表可省略
对定义方法语法格式的详细说明如下:
- 修饰符:同上,日后还会重点介绍
- 方法返回值类型,返回值类型可以是 Java 语言允许的任何数据类型,包括基本类型(如 int)和引用类型(如 string),如果声明了方法返回值类型,则方法体内必须有一个有效的 return 语句。除此之外,如果一个方法没有反回值,则必须使用void 来声明没有返回值。
- 方法名:起个名
- 形参列表: 形参列表用于定义该方法可以接受的参数,形参列表由零组到多组“参数类型 形参名”组合而成,多组参数之间以英文逗号(,) 隔开,形参类型和形参名之间以英文空格隔开。一旦在定义方法时指定了形参列表,则调用该方法时必须传入对应的参数。说的这么抽象,到时候一看就懂。
大括号里的叫方法体,里面可以有多条语句,按前后顺序执行
定义构造器
[修饰符] 构造器名(形参列表){
你的代码
}
这东西和方法很像,可以理解为特殊的方法。
- 修饰符:同上
- 构造器名:构造器名必须和类名相同。
- 形参列表:和定义方法形参列表的格式完全相同。
注意一点,构造器既不能定义返回值类型,也不能使用void 声明构造器没有返回值。如果为构造器定义了返回值类型,或使用void 声明构造器没有返回值,编译时不会出错,但Java 会把这个所谓的构造器当成方法来处理一一它就不再是构造器。
2x0 总结
没有图就是显着文章短,扎心,现在我已经不知不觉写了快两千字了,现在是半夜 12:48 ,不行今天就到这里吧。这东西我估计你们也是看着迷迷糊糊的,这样吧,你们先消化消化,咱们明天就是往上扔代码实战。
欢迎关注我的公众号,
每日一文,轻轻松松带你入门 Android 开发
2020/5/24 注:
这是我 2018 年高中毕业的假期写的,当时并没有自己搭建博客,近期我给这一系列的文章都放到我自己的博客上。
当时写这个系列文章的想法就是扎实下基础,然后能帮到更多的人就更好了,但是大学开学之后就开始了新生活,没有大块的时间去编撰,系列文章也没有再更新过。但是我其实并不想放弃这个系列,那就,有缘再见吧,拜拜ヾ(•ω•`)o