联系——让世界动起来

关键词: 联系   调用    函数    集合


  • 现实中的联系

联系有很多含义。它可以是你手机里的联系(人),通讯工具中的联系(如QQ);它也可以指一个动作(如:有时间联系我)。等等。通常来说,这些都是狭义的联系。而本文要说的是哲学中的联系,可以说是复杂含义的联系或广义的联系。


在哲学中,联系指事物内部矛盾双方和事物之间所发生的关系。听起来不好理解对吧?其实我们不必搞懂它,我们的目的是知晓联系是什么,而它可以有更有趣的解释。我是唯物主义者,所以先给联系一个声明:联系是客观存在的。下面我们来进行一些有意思操作。
通过把第一句中的‘事物’替换为‘对象’,我们能得出一些推论。(注意,替换后意思可能改变,但它有利于我们理解联系)改变后为:联系指对象内部矛盾双方和对象之间所发生的关系。回忆前文提到的对象,对象中有状态和行为,当时我分别称它们为静的东西和动的东西。而静动便可以理解为对象内部的矛盾双方,那么这句话就可以这样理解:联系就是说一个对象的状态和行为与另一个对象之间发生的关系。我们仍然举马的例子(可能我比较喜欢马)。马作为一个对象(实例为某匹马),当它受到威胁时,比如一头雄狮要来吃它。马的状态可能由静态变到紧张态,它还可能发出行为:嘶叫。当然如果它正常的话紧接着就是奔跑,逃脱狮子的追杀。狮子追马就是一个联系。
现实世界中几乎任何一个对象都可以和其它任意对象有联系,区别是有的联系只是机械的相加,没有实际意义。这里我说的可以有联系是站在人类视角,任何对象之间都有联系没错,而人类赋予了他们实际含义。


现在基本了解了什么是联系。我们接下来要做的仍然是举一反三,但在这之前我声明一下本文接下来要用到的数学名词:赋值,函数,集合。




  • Java 中的联系
先从一个对象说起。假如你创建了一个类A,并给它分配了字段和方法,即对象的状态和方法。为了使A类更有意义,分别给对象成员赋值,我称它为出厂化设置。在方法中也定义了相应操作。下面写出:
class A{

    private int a = 1;

    static String s = "Hello!";

    public A() { }    //构造方法,初始化为默认值

    public int get_a() {   //返回a的值

           return this.a;

    }


现在你有了一个类A,但你能做什么呢?你好像什么都不能做,比如你不能将字符串s输出。如果你稍微了解一点java,你就能做好多事情。输出内容,你会在主函数main添加:
System.out.println("s= "+A.s);

//控制台显示:Hello!

别小看这条语句,它包含了很多信息。如果你懂得多一点,你会知道println()是PrintStream类所调用的方法,out则是一个静态PrintStream对象,而它又是system类的一个属性,再往深处扩展,system存在于lang类库中,java.lang是默认导入到每个java文件中的,因此不必在开头声明import(类库)。(A.s,s是静态变量)
好了有点晕。不过没关系,这里我们的目的是输出s,下面我来理一下这当中的机理。你有了一个类A,它有字段和方法,你想用它的字段或方法实现输出s的操作,于是你调用了PrintStream类的println()方法,然后成功实现。
请注意‘调用’一词,它体现了联系,这也是本文要讲的主旨。输出s是一个简单的例子,下面我们在延伸一下。


假如你又创建了一个类B,比如:
//计算给定数字的平方并输出。

class B {

     public static void main(String[] args) {

            int n;

            int m = way(n);    //未初始化n,修改见下

            System.out.print("m*m ="+m);

     }

     public static int way(int n) {

         return n*n;

     }    

但是上述代码并不能执行,因为你没有初始化n,即给n赋一个值。(关于赋值我会在之后的文章中详细介绍)
但是你想让n等于类A中a的值,该怎么做呢?
你需要某种中介将这两个对象联系起来。其实不复杂,只要用这几条语句即可实现:
A x = new A();

n = x.get_a();

//控制台显示:1

对,你创建了一个对象A,它已经被定义好了(A已存在),并用x作为这个对象的名字,x中有关于a的初始化
“int a = 1;”所以x.get_a()表示你调用了x的方法,n=x.get_a(),你成功把a值成功赋给了n。
到此完成联系。可表述为类B中字段n联系了类A中方法get_a().
static的用法。
注意到类A中有一个static字段:String s="Hello!"; 你想在类B中输出s,只需A.s即可。回想在上一篇博文中static 的介绍,即是这样用。(静态方法类似)


  • 函数和集合(浅谈)


简单谈一下我的理解。 在编程中函数和方法意义相同,但是最初为什么叫函数呢?我是这样猜想的:方法中的传入参数和返回参数刚好对应函数中的自变量和因变量。所以方法也叫函数(在c/c++中称呼)。
再说一下集合*。其实一个类就相当于一个集合,类与类之间的联系就是集合之间的联系,类中成员即集合中的元素。另外集合的运算也体现了类之间的交互和关系。


注释:*1(集合):指数学中的集合。


(推荐阅读:《Thinking in Java》 (美) Bruce Eckel 著  。引用原书的评论:本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel 具有亲和力的文字和小而直接的编程示例面前也会化解于无形。)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lingpy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值