java中的对象

java中的对象

1.什么对象?

        所谓的对象其实就是通过java类所产生的实体。

        例如:盖楼房的图纸就是Java类,根据这个图纸修建起来的能够被看见,被使用的这个实际存在的楼房,就是相当于是用过这个图纸得到的对象。

       Java类实际是一个抽象意义上的概念,对象就是通过这个java类的抽象概念具体化之后的一个具体概念。

2 .类和对象的关系

       2.1java类是构造对象的模板。

       2.2对象是这个模板的具体实现。

3.如何通过java类得到对象?

        通过new + 构造方法就可以得到一个类的对象。因此上一个类中的构造方法就显得很重要,所以我们通过class关键字定义出来的java类,默认就是有一个无参数的构造方法存在,只不过我们没有显式写出这个无参数的构造。当出现有参数的构造方法时,最好能够显式写出这个无参数的构造方法。

        类中的构造方法就是为了创建对象而存在的。

        通过new 构造方法就可以得到一个类的对象是一个没有名称的对象,因此上也叫匿名对象。所以通常情况下我们都是需要定义/声明一个该类的变量来保存这个类的对象。我们把保存对象的这个类的变量又叫引用【引用中实际上保存的是该对象在内存的实际地址】

例如:

package com.click369.test.demo1;

public class MyTestClass {

      public  int  testid=1001;

      public  String  testname="zhangsan";

      public  MyTestClass(){

       System.out.println("无参数的构造方法--创建对象的时候要使用");

      }

      public  void  method(){

       System.out.println("MyTestClass类中的实例方法");

      }

      public static   void  staticMethod(){

       System.out.println("MyTestClass类中的类方法");

      }   

}

//创建MyTestClass类的对象

//下面的java代码创建的MyTestClass对象没有名称所以new  MyTestClass();匿名对象

//通常情况下我们需要为这个匿名对象起个名称【定义/声明该类的变量】,把匿名对象赋值给定义的变量

//MyTestClass  mtc;

//mtc=new  MyTestClass();

MyTestClass  mtc=new MyTestClass();

//这时匿名对象就有了名称,这个名称就是定义/声明该类的变量

4.通过java类创建的对象可以做什么?

        1.可以在其他的类的方法中去访问该类的变量和方法。

        4.1 在其他类的构造方法中访问该类的变量【实例变量/类变量】

                   4.1.1 对象.实例变量

                   4.1.2 对象.类变量/类名.类变量

       4.2 在其他类的实例方法中访问该类的变量【实例变量/类变量】

                   4.2.1 对象.实例变量

                   4.2.2 对象.类变量/类名.类变量

        4.3 在其他类的类方法中访问该类的变量【实例变量/类变量】

                  4.3.1 对象.实例变量

                  4.3.2  对象.类变量/类名.类变量

例如:

public class TestClass {

public  int  testid=1001; //实例变量

public  static  String  testname="zhangsan";//类变量

}

package com.click369.test.demo1;

public class OtherClass {

  public  OtherClass(){

  //java程序=对象+消息

  //创建TestClass类的对象

 TestClass  tc1= new  TestClass();

 System.out.println("testid=="+tc1.testid);

 System.out.println("testname=="+tc1.testname);

 System.out.println("testname=="+TestClass.testname);

  }

  public  void   testMethod(){

  //java程序=对象+消息

  //创建TestClass类的对象

 TestClass  tc1= new  TestClass();

 System.out.println("testid=="+tc1.testid);

 System.out.println("testname=="+tc1.testname);

 System.out.println("testname=="+TestClass.testname);

  }

}

public class TestMain {

public static void main(String[] args) {

 //java程序=对象+消息

  //创建TestClass类的对象

 TestClass  tc1= new  TestClass();

 System.out.println("testid=="+tc1.testid);

 System.out.println("testname=="+tc1.testname);

 System.out.println("testname=="+TestClass.testname);

}

}

     2.其他类的方法中访问该类的方法

                1.其他类的构造方法中方法该类的构造方法,实例方法,类方法

                       1.1 new + 构造方法  【创建对象】

                       1.2 对象.实例方法

                       1.3 对象.类方法 / 类名.类方法

                2.其他类的实例方法中方法该类的构造方法,实例方法,类方法

                       2.1 new + 构造方法  【创建对象】

                       2.2 对象.实例方法

                       2.3 对象.类方法 / 类名.类方法

                3.其他类的类方法中方法该类的构造方法,实例方法,类方法

例如:

package com.click369.test.demo2;

public class Student {

      public  Student(){

       System.out.println("Student类的构造方法");

      }

      public void  testStudent(){

       System.out.println("student类的实例方法");

      }

      public  static void  testStaticStudent(){

       System.out.println("student类的类方法");

      }

}

package com.click369.test.demo2;

public class OtherClass {

      public  OtherClass(){

      Student   stu1=  new Student();

      stu1.testStudent();

      stu1.testStaticStudent();

      Student.testStaticStudent();

      }

      public   void  method(){

       Student   stu1=  new Student();

        stu1.testStudent();

        stu1.testStaticStudent();

        Student.testStaticStudent();

      }

      public  static  void  main(String args[]){

       Student   stu1=  new Student();

        stu1.testStudent();

        stu1.testStaticStudent();

        Student.testStaticStudent();

      }

      }

注意:以上的测试是建立在该类的方法/变量的修饰是public,如果换其他的修饰符效果可能会不一样。

      其他的修饰符后面会详细介绍

5.在访问方法的时候,如果这个方法是一个有参数的方法,如何处理?

           参数--变量【接收本方法之外的数据,进入本方法参与运算】

                     参数是可有可无,可有多,可有少

           口诀:要什么,给什么

                      要什么:方法的参数个数,参数的类型

                      给什么:传递具体数据值,传递引用

例如:

package com.click369.test.demo3;

public class Student {

    public   Student(){

     System.out.println("Student类的无参数构造方法");

    }

    public   Student(int  num){

     System.out.println("Student类的有参数构造方法参数是num=="+num);

    }

    public   Student(MyClass  mc){

     System.out.println("Student类的有参数构造方法参数是mc=="+mc);

    }

    public   void methodStudent(int  num){

     System.out.println("Student类的有参数实例方法参数是num=="+num);

    }

    public   void methodStudent10(MyClass  mc){

     System.out.println("Student类的有参数实例方法参数是mc=="+mc);

     mc.myclassid=1000222;

     mc.method();

     mc.staticMethod();

    }

    public  static void staticMethodStudent(int  num){

     System.out.println("Student类的有参数类方法参数是num=="+num);

    }

    public  static void staticMethodStudent10(MyClass  mc){

     System.out.println("Student类的有参数类方法参数是mc=="+mc);

    }

}

package com.click369.test.demo3;

public class MyClass {

      public  int myclassid=1001;

      public  static  String myclassname="网星软件";

      public  void  method(){

       System.out.println("MyClass类的实例方法");

      }

      public static void  staticMethod(){

       System.out.println("MyClass类的类方法");

      }

}

package com.click369.test.demo3;

public class TestMain {

public static void main(String[] args) {

  //通过Student类中有参数构造方法创建对象

Student  stu1= new  Student(100);

int  a=200;

Student  stu2= new  Student(a);

//创建对象

Student stu=new Student();

stu.methodStudent(200);

stu.methodStudent(a);

Student.staticMethodStudent(100);

Student.staticMethodStudent(a);

//上面的这个方法所传递的参数的数据是具体的某一个数据值。

MyClass  mc=new MyClass();

Student  stu3=new Student(mc);  

Student  stu4=new Student(new MyClass());  

stu3.methodStudent10(mc);

Student.staticMethodStudent10(mc);

//mc--是MyClass类型变量,这个变量中保存的是new MyClass()类的对象的内存地址--引用

}

}

6.当方法被使用的时候,这个方法有返回值,如何处理?

          1.除过构造方法,其他的方法是不能去掉方法返回值部分。

          2.方法如果没有返回值要使用void代替,如果方法有返回值那么这个方法的最后一句话一定是return  xxx。

          口诀:给什么,收什么

                     给什么:方法的返回值类型

                     收什么:定义符合方法的返回值类型的变量来保存数据

例如:

package com.click369.test.demo4;

public class Student {

     public  int  studentMethod(int  num){

      return num;

     }

     public  String  studentMethod(MyClass  mc){

      return mc.myclassname;

     }

     public static MyClass  staticStudentMethod(){

      return  new MyClass();

     }

}

package com.click369.test.demo4;

public class MyClass {

      public  int myclassid=1001;

      public  static  String myclassname="网星软件";

      public  void  method(){

       System.out.println("MyClass类的实例方法");

      }

      public static void  staticMethod(){

       System.out.println("MyClass类的类方法");

      }

}

package com.click369.test.demo4;

public class TestMain {

public static void main(String[] args) {

Student  stu=new Student();

int  a=stu.studentMethod(1000);

System.out.println("a=="+a);  //a==1000

MyClass  mc=new MyClass();

String  str=stu.studentMethod(mc);

System.out.println("str=="+str);  //str==网星软件

MyClass  mc1=Student.staticStudentMethod();

}

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值