Java系列教程-01-类与对象

来源:互联网 发布:mac ps教程 编辑:程序博客网 时间:2024/05/29 04:33

1.类与对象

Java是一个面向对象编程语言,允许你使用面向对象的方式编程,并且,在Java当中,你所见的都是对象,所以,在深入学习Java前,搞好面向对象的理解是很重要的。

类:具有相同属性事物的集合
对象:某个类的实例

举个例子,某大学研究生一年级所有学生可以看做一个类,这些学生中的小明就是这个类的对象。再举个例子,所有的狗是一个类,那么一只小泰迪就是这个类的一个对象。

Java中用class关键字创建一个类,用new关键字实例化某个类的对象,下面创建一个学生类,并实例化一个学生类的对象:

//定义学生类class Student{}/*主程序入口*/public static void main(String args[]){    //实例化学生类的对象    Student stu1=new Student(); }

上面只是定义了一个学生类,里面并没有内容,我们知道,通常一类学生应该有学生的姓名,学号,性别等等属性,因此我们可以往类里面添加这些属性:

//定义学生类class Student{    String Name;//姓名属性    Int Age;//年龄属性    String Number;//学号属性}/*主程序入口*/public static void main(String args[]){    //实例化学生类的对象    Student stu1=new Student(); }

在类里的属性称为类的成员变量,不难理解,这些属性在编程语言中是用变量定义的,比如上面的姓名属性Name,我们用一个String类型的变量来表示它。表示这类学生都有姓名这个属性,并且它的类型是String类型。
当给类添加了属性后,就可以在实例化的对象中调用属性了。这就好比你说你定义了一类学生,并且说这类学生都有姓名,因此如果小明是这类学生中的一员,那么他肯定有名字。

//定义学生类class Student{    String Name;//姓名属性    Int Age;//年龄属性    String Number;//学号属性}/*主程序入口*/public static void main(String args[]){    //实例化学生类的对象    Student stu1=new Student();     //用对象.属性名来调用成员变量    stu1.Name}

到现在你已经学会定义类,并且实例化类的对象,你也可以随意给类添加属性,一旦你给类添加属性,所有的该类的对象也就有了这个属性,这些看起来不难理解。此外你还可以给类添加任何的方法,方法好比一些动作和行为或者说是一些功能,比如,所有的学生都会说话,那么你可以给类加一个说话的方法,该方法完成的功能就是学生说出他们的名字:

//定义学生类class Student{    String Name;//姓名属性    Int Age;//年龄属性    String Number;//学号属性    //成员函数(方法)    void say(){        //输出姓名        System.out.println(Name);    }}/*主程序入口*/public static void main(String args[]){    //实例化学生类的对象    Student stu1=new Student();     stu1.say();}

对象调用方法时候用的也是对象.方法名,只不过方法名后面需要加括号,并且方法如果需要参数的话,需要传递参数。

以上就是类和对象的基本内容,如果你仔细看了,应该很容易就理解。

2.初始化

对于上面的学生类来说,我们定义了3个属性和一个方法,并且实例化了一个对象,现在我们来看看这个对象:

Student stu1=new Student();

我们知道,这个stu1好比是小明,但是我们并没有代码告诉他是小明,尽管他有名字,年龄和学号等属性,但是他们都是空值,所以我希望当我new完一个对象后,该对象就应该有相应的属性值了,所以什么时候给这些属性赋值,是应该考虑的问题,下面介绍两种赋值方式:

1.直接赋值
2.构造器赋值

直接赋值就是当我们在定义属性的时候,就给它赋值,比如这样:

//定义学生类class Student{    String Name=“小明”;//姓名属性直接赋值    Int Age=20;//年龄属性直接赋值    String Number=1111111;//学号属性直接赋值}/*主程序入口*/public static void main(String args[]){    //实例化学生类的对象1    Student stu1=new Student();     //实例化学生类的对象2    Student stu1=new Student(); }

在主程序入口中我们实例化了两个对象,但是我们发现,其实这两个对象的属性值是一样的,姓名都是小明,年龄都是20,学号都是111111.原因就在于,我们在类里面给属性直接赋值就好比告诉类:这类学生都有名字,并且他们都叫小明。因此我们再实例化多少对象,对象的属性值都是一样的,这实际上是没意义的。所以我们通常不采用这种赋值(初始化)方式。

构造器赋值是最常用的初始化方式,首先来说什么是构造器,你只需要知道3点:

1.它是类的成员函数
2.它和类同名
3.每个类都默认有一个无参数的构造函数

实际上但你定义了一个类以后,你的类是这样的:

class Student{    //构造函数    Student(){    }}

尽管在上面的代码里我们没写构造函数,他也存在,

//定义学生类class Student{    Student(){        System.out.println("我是构造函数");    }}/*主程序入口*/public static void main(String args[]){    //实例化学生类的对象    Student stu1=new Student(); }

上面说了,当实例化一个对象的时候,类的构造函数就会自动执行,所以上面的代码,当你new了一个stu1的时候,屏幕就会输出一句话:“我是构造函数”,这是因为,类里面的构造函数执行了。

记住一句话:构造函数名字必须和类名相同,并且是公有的。只要满足这一点,他就是构造函数。你可能会奇怪实例化对象的方式:

Student stu1=new Student()

为什么new Student后面会有一个括号?通常我们调用一个无参数的方法才会加一个括号,难道实例化一个类时候也需要调用一个无参数的方法?你可能已经猜到了,这个括号实际上就是再调用类的无参数的构造函数,那么现在我给构造函数加一个参数呢?像这样:

//定义学生类class Student{    Student(String _name){    }}/*主程序入口*/public static void main(String args[]){    //不能实例化对象,因为没有无参数的构造函数    Student stu1=new Student();     //可以实例化,调用一个参数的构造函数    Student stu2=new Student("小明");}

对于上面的程序,类的构造函数里面只有一个带一个参数的构造函数,所以实例化对象stu1的时候,new Student()代表调用类的一个无参数的构造函数,但是类并没有,所以程序报错,相反实例化stu2对象的时候传递了一个参数进去,代表调用一个参数的构造函数,因此程序正确执行。
但是如果你想让stu1也正常执行,那么你可以在类里面再添加一个无参数的构造函数,像这样:

//定义学生类class Student{    Student(String _name){    }    Student(){    }}/*主程序入口*/public static void main(String args[]){    //不能实例化对象,因为没有无参数的构造函数    Student stu1=new Student();     //可以实例化,调用一个参数的构造函数    Student stu2=new Student("小明");}

一个类里面有两个名字相同的方法,但是他们的参数不一样,这叫做函数的重载,重载意思就是可以函数名相同,但是参数或者返回值类型要不同。因此,只要返回者或者参数列表不同,一个类可以有多个构造函数,并且我们可以通过参数给对象传值,来初始化对象的属性值:

//定义学生类class Student{    String Name;    Student(String _name){        Name=_name;//初始化Name的值    }    Student(){    }}/*主程序入口*/public static void main(String args[]){    //不能实例化对象,因为没有无参数的构造函数    Student stu1=new Student();     //可以实例化,调用一个参数的构造函数    Student stu2=new Student("小明");    Student stu3=new Student("小红");}

在上面的程序中,stu2对象实例化时候,他的Name就变成了小明,stu3对象实例化的时候,他的Name就变成了小红。同理,你要为多个属性赋值,就可以传递多个参数,并且你也可以定义多个重载函数,这完全取决于你的设计。

学到现在你已经可以创建一个类并且实例化一个对象了,同时你也可以为类添加你想要的属性和方法,对于属性的初始化,你也可以通过构造函数的重载等给属性赋值。到这里,一个简单的类就定义完了,实际开发中,一个类的总体框架就是这样。下面该是你练手的时候了,记住,编程一定要合上书,自己写。

2016-12-15
练习:
1.定义一个形状类,该类有名字,长,宽等属性值,可以通过两种方式实例化形状类,一种是实例化是后需要知道名字但是可以不必知道长和宽,此时长和宽默认为0,另一种是实例化对象的时候指定名字和长和宽。此外该类应该能计算具体形状的面积和周长。请给出你对该类的实现代码。

2 0
原创粉丝点击