初学者---简介java中的对象和类(1)

来源:互联网 发布:linux 运维自动化 web 编辑:程序博客网 时间:2024/06/10 15:43

刚刚开始学java不久。。之前一直都是用的C语言,所以也算是有点基础。。而且java的语法和C的语法很多都是类似的。。所以在语法方面我不会做过多的总结,毕竟用着用着就会了。。

所以今天我直接从对象和类开始= =

听很多大牛们说过,java是纯面向对象的一门语言。。(找不到对象你怎么写程序)。。然而对于从来没学过java的人来说并不是很懂对象到底是什么。。。我作为一个初学者也只是稍稍理解一点,不会细讲,但是我觉得理解这个东西跟会用这个东西可能关系不大吧。。反正用着用着就会了的意思。。


看我写的东西之前先声明一点:毕竟我也是初学者,可能会出现错误。


对象是由类定义出来的,所以在学对象之前,我们先要了解类。“类”这个东西类似于C中的结构体,我可以声明一个类,并且给他定义一些方法和数据域,方法就类似于定义在结构体里面的函数,数据域就类似于定义在结构体里面的变量。在C语言中我们定义了这个结构体之后,还要创建这个结构体的变量,创建变量的过程就类似于通过类来定义对象。


怎样用类来定义对象呢?我们通常的格式为:

ClassName objeceName = new ClassName();

我学习的资料上是没有这一行原话的,因为这行代码其实包含了很多过程,我们可以类比一下java语言中数组的声明方法,例如:

int[] array = new int[10];

这两个格式是类似的,拿下面数组这个来说,首先他创造了一个对数组的引用,然后创建了一个大小为10的整形数组,最后把这个整形数组的引用赋值给变量array。但是我觉得应该所有的类都可以用这样的格式来定义对象,所以在这里我写出来。


我们说类和结构体相似。但是类又和结构体不尽相同,类主要由三个部分构成:数据域、构造方法和方法。基本格式为:

public class classname {dataFieldType dataFieldName;classname() {}methodType methodName1() {}methodType methodName2() {}}

下面是一个实际的类的例子:

public class People {int age;People() {age = 0;}People(int nowAge){age = nowAge;}void growUp() {age++;}int getAge() {return age;}void printAge() {System.out.println(age);}}


数据域就是定义在类中的纯数据类型,在上面的People中,age就是一个数据域中的变量,这里无需多言。


构造方法和方法是区别开来的两个概念。

构造方法:

构造方法是在你建立对象的时候使用的方法,在上面的People类中,People()就是一个构造方法。

我们发现构造方法前面并没有声明构造方法的类型,如int,double,甚至连void都没有,而且构造方法的名字必须要和类名相同。这是因为构造方法是在创建一个对象使用new操作符时调用的,构造方法的作用是初始化对象。

又可以看到,在People类中我们有两个People的构造方法,这是因为java中允许两个方法重名,但是参数不同,调用时会自动匹配最适合的方法,这个特点不仅仅适用于构造方法,普通方法同样适用。

方法:

之前说类中的方法类似于C中的函数,这里说的方法就是这一类方法(不包括构造方法)。在上面的People类中,growUp()、getAge()、printAge()这些都是方法,他们用来实现我们这个对象的一些操作,达到我们需要的效果。


我们知道在java中程序也是从main函数开始执行的,我们把含有main函数的类叫做主类,对一个具体的对象,我们可以通过“.”点操作符来调用这个对象的数据域和方法。 下面是一个实际调用people类的例子:

public class Test {public static void main(String[] args) {People liLei = new People();//定义一个对象李磊People hanMeiMei = new People(18);//定义一个对象韩梅梅//十年之后for(int i = 0 ; i < 10 ; i++ ){liLei.growUp();//他们两个长大了hanMeiMei.growUp();}liLei.printAge();//输出他们的年龄hanMeiMei.printAge();}//这个故事告诉我们李磊和韩梅梅是不可能在一起的}public class People {int age;People() {age = 0;}People(int nowAge){age = nowAge;}void growUp() {age++;}int getAge() {return age;}void printAge() {System.out.println(age);}}



数据域和局部变量
在java中,由类直接控制的变量叫做数据域,由类中的具体的方法定义的变量叫做局部变量,如果一个引用类型的数据域没有引用任何对象,那这个数据域的默认值为null,类似的,数值类型的默认值为0,boolean类型的默认值为false,char类型的默认值为'\u0000',但是java没有给方法中的局部变量赋默认值。


接下来是我用的书上提到的两个常用类,我把类名和常用方法名写出来,但具体的调用就自己百度吧。
Date类(在java.util包中)
构造方法:Date()和Date(long)
方法:String toString()、long getTime()和void setTime(long)
Random类(在java.util包中)
构造方法:Random()和Random(long)
方法:int nextInt()、int nextInt(int)、long nextLong()、double nextDouble()、float nextFloat()、boolean nextBoolean()
Point2D类(在javafx.geometry包中)
构造方法:Point2D(double,double)
方法:double distance(double,double)、double distance(Point2D)、double getX()、double getY()、String toString()


原创粉丝点击