Java中的对象

一、什么是对象

对象是类的一个实例,有状态和行为

例如:狗作为一个类,那么一只狗就是这个狗这个类的一个对象,一只狗的状态有:颜色、大小、名字、品种;一只狗的行为有:吠叫、摇尾巴、吃等

例如:以汽车作为一个类(Class),那么每一辆汽车的就是这个汽车的对象(Object),对象包括了汽车颜色,品牌等

1.1Java中的对象

软件的对象也有行为和状态

软件对象的状态称之为属性,

软件对象的行为称之为方法。

方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成

二、Java中的类

Java的类可以看作是对象的模板

 这里复习一下之前所讲的类的定义(包含属性和行为),代码体现如下

public class Dog {

    //  属性
    String name;
    String colour;
    String breed;
    int age;

    //方法
    void eat(){

    }

    void run(){

    }

    void sleep(){

    }


}

构造方法:

点击右键选择Generate,快速生成

public class Dog {

    //  属性
    String name;
    String colour;
    String breed;
    int age;

    //方法
    public String eat(String food){
        return "rich";
    }

    void run(){

    }

    void sleep(){

    }

    //无参构造,一旦出现有参构造无参构造必须定义
    public Dog() {
    }

    //有参构造
    public Dog(String name, String colour, String breed, int age) {
        this.name = name;
        this.colour = colour;
        this.breed = breed;
        this.age = age;
    }
}

三、创建对象

对象是根据类来创建的,在Java程序中使用关键字new来创建一个对象,具体是以下三个步骤

  1. 声明:包括对象名称和对象类型
  2. 实例化:使用new关键字来创建一个对象
  3. 初始化:使用new关键字创建对象时,会调用构造方法来初始化对象

在测试类中创建对象

 
 Dog dog;     // 1.声明:对象名称为dog,对象类型为Dog
 dog = new Dog();  // 2.实例化:使用new关键字创建对象
 

以上的步骤可以合并写成下面的形式

        Dog dog = new Dog();

3.1对象调用类成员变量

  1. 调用类成员变量中,分为调用有参构造和调用无参构造
  2. 调用无参构造时,先通过new关键字创建一个对象,打印输出对象.变量,由于调用的是无参构造器,所以输出为变量的默认值为null
  //这里调用的是无参构造,调用Dog的类成员变量并没有赋储值,打印输出为null
        Dog dog = new Dog();
        System.out.println(dog.name);
  1. 调用有参构造时,先通过new关键字创建一个对象,由于是有参构造,需要在等号右边的括号中传入有参构造器中类成员变量的相关变量,打印输出对象.变量,输出的是等号右边传入的相关变量,这里打印输出为“甲”
 //这里调用的是有参构造,在括号中传入了变量相应的值,
        Dog dog1 = new Dog("甲","黑","牧羊犬",2);
        System.out.println(dog1.name);

测试类的整体代码如下

public class DemoApplication {

    public static void main(String[] args) {


        //这里调用的是无参构造,调用Dog的类成员变量并没有赋储值,打印输出为null
        Dog dog = new Dog();
        System.out.println(dog.name);

        //这里调用的是有参构造,在括号中传入了变量相应的值,
        Dog dog1 = new Dog("甲","黑","牧羊犬",2);
        System.out.println(dog1.name);


    }
}

3.2对象调用类成员方法

如何调用类成员方法其实在第一篇文章中已经有所说明,在这里再进行说明一次,就当复习了,

  • 无参无返
  1. 在本类中调用:方法名();
  2. 在其他类中调用:对象.方法名();
  • 无参有返
  1. 在本类中调用:变量 = 方法名();//这个变量的类型要和返回类型的相同,用于接收返回值
  2. 在其他类中调用: 变量 = 对象.方法名();//这个变量在一开始其他类中一开始就要定义,且与返回值的类型相同,用于接收返回值
  • 有参无返
  1. 在本类中调用:方法名(实参列表);//有参数所以需要在括号中填入参数
  2. 在其他类中调用:对象.方法名(实参列表);
  • 有参有返
  1. 在本类中调用:变量 = 方法名(实参列表);//这个变量的类型要与返回值的相同,用于接收返回值,括号中要传入具体的实参
  2. 在其他类中调用:变量 = 对象.方法名(实参列表)

在Dog类中四种方法代码如下:

public class Dog {

    //  属性
    String name;
    String colour;
    String breed;
    int age;

    //方法


    public void stop(){
        System.out.println("这是无参数无返回值的方法");

    }

    public String run(){

        System.out.println("这是无参数有返回值的情况,return后面的类型要与返回值类型相同");
        return "foot";
    }

    public void sleep(String A){
        System.out.println("这是有参数无返回值的情况");

    }

    
  
    public String eat(String food){

        System.out.println("这是有参数有返回值的情况。return后面的类型要与返回值类型一致");
        return "rich";
        
    }




    //无参构造,一旦出现有参构造无参构造必须定义
    public Dog() {
    }

    //有参构造
    public Dog(String name, String colour, String breed, int age) {
        this.name = name;
        this.colour = colour;
        this.breed = breed;
        this.age = age;
    }
}

在测试类中,进行类成员方法的调用,也是需要利用new关键字创建一个对象,利用对象去调用,但是需要先观察调用的方法是否有返回值,如果有返回值,需要先定义一个与返回值类型相同的变量来接收返回值

步骤如下:

  1. 声明:对象名称为dog,对象类型为Dog  //等号左边部分
  2. 实例化:dog = new Dog();使用new关键字创建一个dog对象
  3. 初始化:使用new关键字创建对象时,会调用构造方法来初始化对象
  4. 合并以上两个步骤  Dog dog = new Dog();
  5. 观察调用的对象是否有返回值,如果有返回值,在进行调用之前,先定义一个与返回值变量相同的变量用于接收返回值
  6. 观察调用的方法是否带有参数,有的话不要忘记传实参列表

测试类的代码如下:

public class DemoApplication {

    public static void main(String[] args) {

        //为了接收无参有返的返回值定义的变量
        String foot;

        //为了接收有参有返的返回值定义的变量
        String a;

        //利用new关键字创建一个对象名为dog
        Dog dog = new Dog();
        //调用无参无返的方法
        dog.stop();

        //调用无参有返的方法,有返回值,先定义一个与返回值相同类型的变量用于接收返回值,这里就放在最上面了
        foot = dog.run();

        //调用有参无返的方法,无返回值,不需要变量接收,但需要在括号内传入实参
        dog.sleep("枕头");

        //调用有参有返的方法,有返回值,需要变量接收,也需要在括号内传入实参
        a = dog.eat("rich");
       
        

    }
}


        //调用无参有返的方法,有返回值,先定义一个与返回值相同类型的变量用于接收返回值,这里就放在最上面了
        foot = dog.run();

        //调用有参有返的方法,有返回值,需要变量接收,也需要在括号内传入实参
        a = dog.eat("rich");

这里可以直接把放到最上面定义的变量放到下面,变成

        String foot = dog.run();

         String a = dog.eat("rich");
       

测试类代码示例如下

public class DemoApplication {

    public static void main(String[] args) {

       

        //利用new关键字创建一个对象名为dog
        Dog dog = new Dog();
        //调用无参无返的方法
        dog.stop();

        //调用无参有返的方法,有返回值,先定义一个与返回值相同类型的变量用于接收返回值,直接在这里定义好类型为String 变量名为foot进行接收
         String foot = dog.run();

        //调用有参无返的方法,无返回值,不需要变量接收,但需要在括号内传入实参
        dog.sleep("枕头");

        //调用有参有返的方法,有返回值,需要变量接收,
        //也需要在括号内传入实参,先定义一个与返回值相同类型的变量用于接收返回值,
        //直接在这里定义类型为String(与所调用这个方法的返回值类型要相同) 变量名为a进行接收
        String a = dog.eat("rich");
       //输出“吃的是rich”
        System.out.println("吃的是"+a);




    }
}

Dog类的代码如下

public class Dog {

    //  属性
    String name;
    String colour;
    String breed;
    int age;

    //方法


    
    public void stop(){
        System.out.println("这是无参数无返回值的方法");

    }

    public String run(){

        System.out.println("这是无参数有返回值的情况,return后面的类型要与返回值类型相同");
        return "foot";
    }

    public void sleep(String tool){
        System.out.println("这是有参数无返回值的情况");

    }



    public String eat(String food){

        System.out.println("这是有参数有返回值的情况。return后面的类型要与返回值类型一致");

        //这里的return传入括号中的参数名
        return food;

    }




    //无参构造,一旦出现有参构造无参构造必须定义
    public Dog() {
    }

    //有参构造(括号中的是形参列表)
    public Dog(String name, String colour, String breed, int age) {
        this.name = name;
        this.colour = colour;
        this.breed = breed;
        this.age = age;
    }
}
  1. 对于第四种有参有返的情况,return 后面是括号种传入的参数 即return food,(在括号中的参数和返回值类型相同时时这么操作)
  2. 那么在测试类中String a = dog.eat("rich");进行了将值赋给了a之后
  3.  System.out.println("吃的是"+a);
  4. 打印输出的结果就是“吃的是rich"

对于返回值return后面到底填什么的思考:

  1. 对于第二种无参有返的情况,括号中没有参数,但是有返回值,那么return后面填一个跟返回值相同的数据类型
  2. 对于第四种有参有返回值的情况,参数括号中形参如果与返回值类型相同,后续打印输出也需要拿到这个实参,那就  return 形参;
  3. 比如这里的return food;   food就是(String food)括号中的形参,后续也需要打印输出这个形参的具体实参所以这里就return food,让测试类中的对象调用这个方法时获得执行方法所return出来的值

  • 11
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值