学习java的一点心得(二)
2016-03-06 23:03
316 查看
2、Java如何创建类
虽然Java在设计的时候是从具体到抽象,即从一堆实体里面抽象出类;但是在使用的时候却是反其道而行之,从类扩展出一个个实体。这有点像神话故事中的造人:女娲先造出一个个模板,然后根据这些模板批量复制;或者就像亚当用自己的一条肋骨复制出夏娃,接着以他俩为模板造出全人类。。
所以,Java编程的主要工作就是在定义模板——类,然后用这个模板生成对象,对象之间的交互就是解决问题的过程。
Java使用class关键字来定义一个类,比如class Apple{},这就定义了一个类Apple。语法上,class关键字后面是类名,类名的首字母必须大写;类名后面是一对花括号,用来存放类的内容。前面说过,类应该有两部分:属性和行为。从语法角度,可以定义只有属性没有行为或反之的类,这完全取决于你的需求。但是两者都没有的话,这样的类是没有意义的。
在Java的语境下,属性被称为数据成员,行为被称为方法成员,当然也有别的叫法,但本质是一样的:属性描述的是静态特征;行为则是动态特征。一个完整的Apple类的例子如下:
另一部分就是属性,基本就是C中的变量声明,包括类型和名字,二者共同组成属性。这里我想了很久,觉得对于类的定义而言,变量的名字比类型更重要一些。类型,说到底是计算机存储不同的“值”所采取的的不同方案的产物,是计算机底层的东西,与Java本身的设计没有关系。假设计算机只用一种类型来表示所有的数据,也就是只有一种基本类型,那么定义类的属性时就不必再写类型,直接写属性名字就可以了,因为对于属性的值,计算机将用统一的格式表示、存储。
所以,从静态角度而言(不考虑方法),类和类之间的本质区别是属性的名称及多寡,而非类名;而同一类的各个实体,有着相同的属性,区别只是属性值的不同。所以用变量来表示属性是很合理的,它可以有不同的值。
基本类型是构成类的基础,简单起见,我们仍假设计算机只有一种基本类型。但是基本类型只是从一个维度来描述事物,比如颜色,长度,重量,温度....这些量的值的变化是一维的,沿着一条直线变化;但是还有一些特性用一个维度来描述是不够的,必须要多个维度才能描述。比如描述天气的时候,必须从温度,湿度,风速等很多方面综合到一起才能描述清楚。为了能描述这种多维的性质,有必要把基本类型组合到一起构成一种新的类型,但是这种新的类型怎么产生呢?答案是用类来表示,从这个角度,定义类即是定义新类型。下面我们定义了Weather类:
故而,类也代表一种类型,而且是区别于基本类型的复合类型。定义类相当于在C中使用typedef为一个结构体重命名。
虽然Java在设计的时候是从具体到抽象,即从一堆实体里面抽象出类;但是在使用的时候却是反其道而行之,从类扩展出一个个实体。这有点像神话故事中的造人:女娲先造出一个个模板,然后根据这些模板批量复制;或者就像亚当用自己的一条肋骨复制出夏娃,接着以他俩为模板造出全人类。。
所以,Java编程的主要工作就是在定义模板——类,然后用这个模板生成对象,对象之间的交互就是解决问题的过程。
Java使用class关键字来定义一个类,比如class Apple{},这就定义了一个类Apple。语法上,class关键字后面是类名,类名的首字母必须大写;类名后面是一对花括号,用来存放类的内容。前面说过,类应该有两部分:属性和行为。从语法角度,可以定义只有属性没有行为或反之的类,这完全取决于你的需求。但是两者都没有的话,这样的类是没有意义的。
在Java的语境下,属性被称为数据成员,行为被称为方法成员,当然也有别的叫法,但本质是一样的:属性描述的是静态特征;行为则是动态特征。一个完整的Apple类的例子如下:
class Apple { double weight; String color; void eat() {} }可以看到,Java的类很像C语言的结构体。不过区别也是显然的:Java的类中可以定义函数,而C的结构体顶多有一个函数指针指向某个函数,但是不能直接定义函数。Java中函数被称为方法,而且方法只能在类中定义,因为方法代表了类的行为,它是类的一部分。
另一部分就是属性,基本就是C中的变量声明,包括类型和名字,二者共同组成属性。这里我想了很久,觉得对于类的定义而言,变量的名字比类型更重要一些。类型,说到底是计算机存储不同的“值”所采取的的不同方案的产物,是计算机底层的东西,与Java本身的设计没有关系。假设计算机只用一种类型来表示所有的数据,也就是只有一种基本类型,那么定义类的属性时就不必再写类型,直接写属性名字就可以了,因为对于属性的值,计算机将用统一的格式表示、存储。
所以,从静态角度而言(不考虑方法),类和类之间的本质区别是属性的名称及多寡,而非类名;而同一类的各个实体,有着相同的属性,区别只是属性值的不同。所以用变量来表示属性是很合理的,它可以有不同的值。
基本类型是构成类的基础,简单起见,我们仍假设计算机只有一种基本类型。但是基本类型只是从一个维度来描述事物,比如颜色,长度,重量,温度....这些量的值的变化是一维的,沿着一条直线变化;但是还有一些特性用一个维度来描述是不够的,必须要多个维度才能描述。比如描述天气的时候,必须从温度,湿度,风速等很多方面综合到一起才能描述清楚。为了能描述这种多维的性质,有必要把基本类型组合到一起构成一种新的类型,但是这种新的类型怎么产生呢?答案是用类来表示,从这个角度,定义类即是定义新类型。下面我们定义了Weather类:
class Weather { int tempeature; int windSpeed; int humidity; }然后我们就可以使用这个新类型来定义“景点”类了:
class Spot { Weather w; int history; int area; }这里假设int就是计算机唯一的基本类型。上面的Apple类有一个String类型的变量,它也是组合类型。
故而,类也代表一种类型,而且是区别于基本类型的复合类型。定义类相当于在C中使用typedef为一个结构体重命名。
相关文章推荐
- spring配置整理
- java动态代理详解
- JAVA作业——JAVA课程的总结及学习计划
- 20144303 《Java程序设计》第一周学习总结
- 20145313张雪纯 《Java程序设计》第1周学习总结
- Java类加载器总结
- 20145211 《Java程序设计》第1周学习总结——小荷才露尖尖角
- Java直接(堆外)内存使用详解
- myeclipse进行web开发(一)
- 作业2-浅谈数组求和java实验
- IntelliJ IDEA spring mvc +mybatis 环境搭建服务器(上)
- 【java】内存分析
- java中特殊的String类型
- java数据类型和运算符
- 有关JAVA学习
- 20145334赵文豪 《Java程序设计》第1周学习总结
- Java Class类的一些总结
- 20145204 《Java程序设计》第1周学习总结
- Java多线程中run和start的区别
- Maven学习总结(二)—— eclipse中使用Maven创建Web项目