读书人

种与对象及方法重载

发布时间: 2013-07-08 14:13:00 作者: rapoo

类与对象及方法重载
1、类与对象
我们通常把在某些方面具有相同特征的事物集合定义成一个类,它是一个主观的、抽象的集合,如人类,水果,它没有具体到某一个物品,一般用属性(特征)和方法(行为)来描述类;而与之相对的,我们把一些客观存在的事物称为对象,它是具体的某一件物品,如你的电脑,他的手机,等等。
我们在定义类时,采用如下基本格式:
首先定义类:public class 文件名{}
其次定义属性:public 属性类型 属性名;
最后定义方法:public 返回类型 方法名(参数类型 参数名){}
我们定义完一个类后,只是提供了一个做事情的平台,如果想要得到一个具体的结果,就需要实例化一个对象。基本格式如下:
类名 对象名 = new 类名();
属性赋值 对象名.属性名=属性值;
方法调用 对象名.方法名(参数);
下面通过一个简单的Java代码来说明:

//定义一个学生类public class Student{//定义属性(特征)public String name;//定义方法(行为):public void study(){System.out.println(name+"学生正在听课!");}}

//定义一个老师类public class Teacher{//定义属性(特征)public String name;//定义方法(行为)public void teach(){System.out.println(name+"老师正在上课!");}}
]//定义一个管理类public class Manager{         //主函数public static void main(String[] args){//创建学生对象和老师对象Teacher tea = new Teacher();Student stu = new Student();//给老师和学生赋名字tea.name = "张三";stu.name = "李四";//调用教和学的方法tea.teach();stu.study();}

2、方法重载
1)我们知道,在一个Java程序中,如果有两个或多个名字相同的方法,我们必须将它们加以区分才能成功地实现调用。这个过程,就是方法重载。也可以说在同一个类中,两个或者多个方法名相同,但是参数不同的方法互为重载方法。
我们识别重载方法的三个条件,首先必须在同一个类中,其次,要有相同的方法名,最后,参数不同(即参数类型、参数个数或是参数顺序不同)。
2)构造方法,每一个类中都会有一个默认的构造函数,一般它没有直接定义,但是在创建对象的过程中,它就被执行了。
定义格式:
public 类名(参数类型 参数名){}

构造方法同一般方法的区别:
构造方法和一般方法相比没有返回类型,但是会有一个返回值,返回的是对象的内存地址;构造方法的方法名必须和类名相同,一般方法没有要求;
构造方法在创建对象时即被调用,一般方法在创建对象后调用。

构造方法重载用于初始化一些属性。
如果重载了默认的无参构造方法,那原来的无参构造函数就不存在了,如需要使用必须重新定义出来。
下面为完整的例子:
public class Police{       //定义有参构造方法         public Police(String str,int b){name=str;blood=b;}       //定义属性(姓名,血量)public String name;public int blood;       //定义攻击方法public void attack(Bandit b){b.blood--;System.out.println(name+"警察攻击了"+b.name+"土匪!");}}
public class Bandit{       //定义有参构造方法public Bandit(String str,int b){name=str;blood=b;}       //定义属性(姓名,血量)public String name;public int blood;       //定义攻击方法public void attack(Police p){p.blood--;System.out.println(name+"土匪袭击了"+p.name+"警察!");}}
public class Manager{public static void main(String[] args){       //创建警察对象和土匪对象并赋值              Police pol=new Police("李明",10);Bandit ban=new Bandit("王刚",10);               //调用攻击方法pol.attack(ban);while(ban.blood>=0){ban.attack(pol);if(pol.blood<0){System.out.println("土匪赢了");return;}pol.attack(ban);}System.out.println("警察赢了");}}

3、this关键字
this关键字的用途:
a、用来区分属性名和参数名(前提是属性名和参数名相同)
b、调用构造方法
c、表示当前调用方法的对象
注意:this只能调用当前类中的属性和方法

4、值传递
值传递适用于Java的八种基本数据类型以及String类型。

5、引用传递
引用传递适用于java的引用类型,如类、接口、抽象类和数组,也可以叫做对象类型,类类型等。

读书人网 >编程

热点推荐