我们常常听到java是面向对象语言,那么这个对象,到底是什么呢?今天我们正式开始学习java的对象。
所谓的对象,就是一种数据的结构。万事万物皆对象,我们可以利用对象在计算机中描述万事万物,首先我们来创建一个对象:
-
创建一个类,类名叫做Person
-
public class Person {
-
private String name;//姓名
-
-
private int age;//年龄
-
-
private String gander;//性别
-
-
private int height;//身高
-
-
private int weight;//体重
-
-
public void eat(){
-
this.weight += 1;
-
}
-
-
public String getName() {
-
return name;
-
}
-
-
public void setName(String name) {
-
this.name = name;
-
}
-
-
public int getAge() {
-
return age;
-
}
-
-
public void setAge(int age) {
-
this.age = age;
-
}
-
-
public String getGander() {
-
return gander;
-
}
-
-
public void setGander(String gander) {
-
this.gander = gander;
-
}
-
-
public int getHeight() {
-
return height;
-
}
-
-
public void setHeight(int height) {
-
this.height = height;
-
}
-
-
public int getWeight() {
-
return weight;
-
}
-
-
public void setWeight(int weight) {
-
this.weight = weight;
-
}
-
}
上述代码,我们就创建了一个简单的,描述人的对象了,在这个对象中,我们赋予了这个人一些属性,有姓名,年龄,性别,身高,体重。还赋予了这个人一个吃的行为,在这个行为中,我们指定了吃一次体重增加1,当然,以上仅作为例子,我们还可以继续给它赋予其它属性和其它行为。然后就是下面的getter和setter方法是必不可少的,两个方法的是用来方便我们外部程序来操作这个对象的。 那么,当我们创建了这么一个Person对象之后,我们如何来调用呢?
-
使用对象: 继续创建一个类,在里面写上main方法
-
public static void main(String[] args) {
-
Person person1 = new Person();
-
person1.setName("大妖怪");
-
person1.setAge(100);
-
person1.setGander("男");
-
}
在这里我们调用Person类的时候需要导包。然后就和创建基本数据类一样,我们需要给我们创建的对象起个名字,这里我们叫它person1,然后后面new Person()是实例化这个对象的意思。 这样,我们就得到了person1这个Person对象。人,只是某些拥有相同属性和行为的一个类别的总称,而你,是人这个类别里其中一个具体的个体。那么person1和Person之间的关系就好比你和人的关系一样。当我们获得了Person类下的具体实例person1之后,我们便可以调用里面的get方法和set方法对里面的属性进行操作,于是下面的内容便是我给person1这个实例的name设为“大妖怪”,年龄设为100,性别设为男。那么,现在这个对象里面的属性已经有值了,我们如何来调用呢?对,getter方法:
-
Person person1 = new Person();
-
person1.setName("大妖怪");
-
person1.setAge(100);
-
person1.setGander("男");
-
-
System.out.println(person1.getName());
-
System.out.println(person1.getAge());
-
System.out.println(person1.getGander());
那么,有人会说,我们吃的动作怎么玩呢?别急,我们先来吃十次,看看体重变化:
-
Person person1 = new Person();
-
person1.setName("大妖怪");
-
person1.setWeight(10);
-
System.out.println(person1.getWeight());
-
for (int i = 0; i < 10; i++) {
-
person1.eat();
-
}
-
System.out.println(person1.getWeight());
刚刚我们通过setter方法来给对象的进行传值,你会发现,好像一个个setter是不是很麻烦,特别是在参数多的情况下代码非常冗杂,因此诞生了我们的构造函数(构造器): 我们在Person类中加入这一一段代码:
-
public Person(String name, int age, String gander, int height, int weight) {
-
super();
-
this.name = name;
-
this.age = age;
-
this.gander = gander;
-
this.height = height;
-
this.weight = weight;
-
}
上面这个叫做有参构造函数,加上之后,我们再创建对象的时候,就可以在实例化的时候就给对象赋值了:
-
Person person1 = new Person("大妖怪", 100, "男", 100, 100);
-
System.out.println(person1.getName());
我们加了有参构造函数之后,你会发现我们再像之前那样去实例化对象,一个个赋值的时候就会报错了,但是有的人他不想一次性赋值,怎么办哇,因此,我们神奇的java又给我们提供了无参构造函数,同样,我们只需要在代码中加上这么一段:
-
public Person() {
-
super();
-
}
你就会发现,两种方法都行了。
当然,上述的getter,setter还有无参和有参构造函数看起来那么大一堆,其实我们不用自己写的,eclipse可以帮我们生成:
-
生成getter,setter方法:
-
在对象中右击选择sourse
-
Generate Getters and setters…
-
弹出这么一个界面我们选择select All之后点Ok即可

-
生成有参构造函数:
-
在对象中右击选择sourse
-
Generate Constructor using Fiedls…
-
然后会弹出一个节目,之后生成getters setters一样操作
-
生成无参构造函数:
-
在对象中右击选择sourse
-
Generate Constructor from superclass…
-
然后会弹出一个节目,之后生成getters setters一样操作
好了,学到这,你应该能领悟到Java对象的概念了,没对象的赶紧回家new一个去吧。 |