开发者学堂课程【Scala 核心编程-基础:小孩玩游戏问题及 Java 静态】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8983
小孩玩游戏问题及 Java 静态
内容介绍
一、小孩玩游戏问题
二、Java 的静态概念
一、小孩玩游戏问题
1.引出问题
在选 java 的时候,将静态东西一旦引入,难度就变大了。因为静态属性和静态方法引入它导致整个面向对象的一些机制复杂度增加。所以先提出一个问题,引出静态属性。以目前学的 Scala 一个面向对象的知识的结构,能不能完成问题。
例:有一群小孩子在玩堆雪人。不时有小孩加入到这个游戏中,请问如何知道现在共有多少人在玩?请使用面向对象的思想编写程序解决。
2.代码实现
定义一个小孩类,来一个小孩就再定义一个全局变量,来一个加一个。这样做不是面向对象,因为一定要统计这个人的个数,放在一个对象里才是面向对象。新建 package 叫 chapter08再建一个 TestchildGame 选择 object。
public class TestchildGame{
public static void main(string[] args) {
//传统方法
//创建很多小孩加入游戏
//定义一个变量来累积 totalNum
Var totalNum = 0
}
}
Class child{
}
totalnumber 没有在一个对象里,即使在一个对象里,totalnumber 应该跟 child 有些关系才是完美的一个解决方法。现在用传统的方法来解决不太好用,就引出了静态的一个概念。
二、Java的静态概念
简单的回顾一下 java 是如何思考问题。怎么在 java 里实现这个问题?它有一个静态的方法或者静态属性。一个人玩游戏就加进去,所以 java 的静态方法是可以完成的。但是 java 中的静态方法并不是通过对象调用,而是通过类对象来调用。虽然静态的东西也可以当做对象来使用,但是 Scala 的设计者认为 java 里面的静态这一部分不是面向对象的。所以在 Scala 里面拿掉了传统的静态属性和静态方法。
具体怎么做?在 Scala 里静态的概念通过伴生对象来体现:Scala 语言是完全面向对象的及万物皆对象的语言,所以并没有静态的操作,即 Scala 中没有这种传统的静态概念。但是为了能够跟 java 语言交互,完美的融合在一起,就设计了一个特殊的对象叫模拟类对象,称之为类的伴生对象。这个类的所有静态内容都可以放置在他的伴生对象中声明和使用。