java学习笔记(1)

在学习了一段时间的java后,就想把自己所学所想的东东写下来,一来对自己所学作一个小结,二来方便和大家交流一下,所以我诚恳地希望大家指出我想错了的地方!

一.对象

       呵呵,这个标题的范围显得有些过大了。在这我只是想写写我对这方面的理解和想法。

       学习一门新的语言主要是要理解它的思维方式,java是纯面向对象的语言,那么了解面向对象的思维方法是至关重要的头等要事了。

在《thinking in java》中首先提及到的“万物皆对象”这一概念,我很是喜欢这样的翻译。在java的世界里每一个事物都是用对象来表示和描述的。这些对象们都有各自的型别(类型),也就是说对象就是型别的实体。比方说,你在地上看见一只猫,那么这只猫就是对象了(它是实体啊)。那么什么是型别呢?就是你的脑海里对什么是猫的定义,要不然你怎么知道它是一只猫呢,对吧。

这些实体存在于系统的堆中或者栈中,虽然在java中一直不提指针这一概念,但实质上对这些对象的访问或发送消息还是通过指针来进行的(也可以说是通过地址来访问的,因为指针、地址和句柄等差不多是同一个东东!)。那么在java中它是使用reference这一概念来替代指针(reference这一单词没有合适翻译),在《thinking in java》中把它比作电视机的遥控器(把电视机比作了对象),也就是说对电视机(对象)的访问和控制是通过遥控器(reference)来进行的。java让你忘却指针——这一令C程序员最得意的东东,目的是为模糊对象和reference之间使用时的区别。

举例来说:

<code>

Cat myCat

myCat = new Cat();

</code>

上面的第一句就是声明了一个叫做myCatreference,还有同时说明了myCat是一个指向猫(cat)型别的reference。第二句的效果是在系统的堆中产生一个Cat型的对象,并且让myCat来指向它。从此以后要访问刚才那个产生的对象都要通过myCat这个变量了(现在我也可以说成是变量了,这个变量大概是存放了对象地址或者还有其他的信息吧!)。之前所说的“模糊对象和reference之间使用时的区别”就是从此java都希望你把myCat当作对象来看待(在C语言中指针变量访问所指向的东东是要用“->”符号的,而直接的变量访问成员是用“.”符号的,而在java里面都是同等对待的,我想所谓“模糊”就是这个意思吧)。

       哦,我都不知道我写到哪里了,现在回过头来继续说说什么是对象吧!

       简单说对象就是拥有状态,行为和型别的东东,这就是说对象可以有内部数据(这使对象拥有了状态),有方法(所以对象可以有行为),还有属于同一型别的对象可以接受相同的消息。

二.接口与实现

这里所说的接口先不要和java的关键字Interface联系在一起!

       接口是描述了一个类能对外界所提供的功能,说明它可以有什么样的行为,可以接受什么样的消息。

关键字Interface用来给出一组的方法定义的描述(当然还有其他的定义常量组的作用),而并不去实现具体方法的代码。Java里的类是可以实现任意多个的接口,也就是说一个类可以具有多种特性,换句话说,你可以以不同的角度来看待同一个事物(当然前提是这个事物具有多个接口),在java世界里这是个很神奇的特点。比如说,有一个对象摆在地上,从前面看它是一只猫(你可以把它当作一只猫来玩),从后面看它是一台电视(你可以把它当电视来用),当然这个例子有些夸张了,不过在java世界里这是完全可以实现的,因为可以让这个对象同时实现猫和电视机的接口,也就使这个对象同时具有了猫和电视机的本领了,当然这个类还可以实现除这两个接口以外的其他方法以扩充这个类的功能。

接口只是管理你可以向这个对象发送什么消息,而没有实现代码。而那些在类中实现的代码和其隐藏着的数据构成了实现(implementation)。

上面说的有点晕,言而总之,关键字Class就是将接口与实现混合在一个模块里面了,关键字Interface只说明了接口(做什么),把要做什么分离了出来,让其它的类去实现(怎么做)。这样便提供了一种层面上的接口与实现分离的一种手段了。(另一个层面上的分离是使用多态性)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值