我们常常听到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一个去吧。