Java --- 类与对象

(一)类声明和类体

    (1)类声明

      类是组成Java程序的基本要素,封装了一类对象的状态和方法。类是用来定义对象的模板,可以创建对象。当使用一个类创建了一个对象时,可以说,给出了这个类的一个实例。在语法上,类由两部分构成:类声明和类体。其基本格式如下:
class 类名(
类体}
class 是关键字,来定义类。“class 类名”是类的声明部分,类名必须是合法的Java标识符,类名最好是见名知意。
 
      

(2)类体的构成

         编写类的目的是为了描述一类事物共有的属性和功能,即将数据和对数据的操作封装在起,这一过程由类体来实现。类体内容有两个成员:成员变量和方法。
          通过变量声明定义的变量,称为成员变量或域,用来刻画类创建的对象的属性。
          方法是类体的重要成员之一。其中的构造方法是具有特殊地位的方法,供类创建对象时使用,用来给出类所创建的对象的初始状态;另一种方法是,由类创建的对象调用,对象调用这些方法操作成员变量形成一定的算法,体现对象具有的某种行为。 
         下面是一个类名为“机动车”的类,成员变量的类型可以是Java中的任何一种数据类型,包括前面学习过的基本数据类型,如整型、浮点型,数组,以及对象和接口。

    成员变量在整个类内都有效,与它在类体的先后位置无关的,但不提倡将成员变量的定义分散在方法之间或者类体的最后,一般写法是先写属性在写行为。 

class Car
{
//定义变量
int speed;

float weight,height;
//定义方法
void chageSpeed(int newSpeed){
speed=newSpeed;
}
float getWeight( ){
   return weight;
}
float getHeight( ){
   return height;
}
}

  (3)注意事项

 在定义类的成员变量时可以同时给赋予初值,表明类所创建的对象的初始状态。注意,对成员变量的操作只能放在方法中,方法可以对成员变量进行操作形成算法。

class A{
int a=9;
float b=12.3f;
void F(){
a=21;
b=21.4f;
}
/*错误示范
int a=9;
float b=12.3f;
a=21;//非法,因为a=21是赋值语句,不是数据的声明,类的成员类型中可有数据和方法(即数据的定义和方法的定义),但没有语句,语句必须放在方法中。
b=21.4f;//非法,同理
void F(){
 
}
*/

}

(二)构造方法和对象的创建

(1)构造方法  

     类中有一部分方法称为构造方法,类创建对象时需使用构造方法,以便给类所创建的对象一个合理的初始状态。构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同,而且没有类型。Java允许一个类中有若干个构造方法,但这些构造方法的参数必须不同,或者是参数的个数不同,或者是参数的类型不同。 

  

​
class A{
A(){
int a;
float b=0.8f;
  System.out.println("这是A类的无参构造函数\n ");
}
A(int newA){
   a=newA;
  System.out.println("这是A类的一个整型参数构造函数\n ");
}
A(float newA){
 b=newA;
  System.out.println("这是A类的一个浮点型参数构造函数\n ");
}
A(int newA,float newB){
   a=newA;
   b=newB;
  System.out.println("这是A类的两个参数构造函数\n ");
}

}

​

  当使用一个类创建一个对象时,则给出这个类的一个实例。创建一个对象包括对象的声明和为对象分配成员变量的两个步骤;

(2)对象声明

① 对象声明的一般格式:

    类的名字 对象名字;如 A a; //如上述A类声明的对象a。用类声明的数据称为类类型的变量即对象.

    声明对象变量a后,a的内存中还没有存放数据,也就是说,该对象还没有“引用”任何实体,我们 未分配实体的对象时的a是一个空对象 。空对象不能使用,因为它还没有得到任何“实体”,必须为对象分配成员变量,即为对象分配实体。

② 为声明的对象分配成员变量
       使用new运算符和类的构造方法为声明的对象分配成员变量,如果类中没有构造加系统会调用默认的构造方法(默认的构造方法是无参数的,但要记得构造方法的名字必类名相同这一规定)。
      如果类中定义了一个或多个构造方法,那么Java不提供默认的构造方法。如果上述只提供一个带参数的构造方法, 
 (1)为成员变量分配内存空间,然后执行构造方法中的语句
对于A 类,就是为a,b 变量分配内存,然后根据所使用的构造方法对a,b进行初始化。如果成员变量在声明时没有指定初值,所使用的构造方法也没有对成变量进行初始化操作,那么对于整型的成员变量,默认初值是0;对于浮点型,默认初值0.0;对于boolean类型,默认初值是false;对于引用型,默认初值是null。
(2) 创建对象就是为它分配成员变量,并获得一个引用,以确保这些成员变量由它来操作管理。 

 (3)声明和分配成员变量可一起:A a=new A(10,20.1f); 

     对象是一种类类型变量,属于引用型变量,即对象变量中存放着引用。引用型变量是用来存放称为“引用”的地址号,而且引用型变量可以操作它所引用的变量。但引用与指针有着本质的区别,尽管引用型变量和指针变量都用来存放一个地址号,但引用型变量不能像指针变量那样任意分配内存地址,或像整数一样来操作它。某个类声明的对象可以引用该类通过运算符 new和构造方法运算后得到的地址。如果把一个整型常量赋值给该对象,在编译时会报错,提示类型冲突。
   注意:把new表达式的结果赋值给对应类型的变量,相当于给对象取名字,如果没有把new表达式赋值给一个变量,那么这个new出来的对象,相当于匿名对象。

            对象名中存储的是:对象地址

(3)使用对象

         对象不仅可以操作自己的变量改变状态,还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。
         通过使用运算符“.”,对象可以实现对自己的变量访问和方法的调用。
         ①对象操作自己的变量(对象的属性)。对象被创建后,就有了自己的变量,即对象的实体。通过使用运算符“”,对象可以实现对自己的变量的访问。
          ②当对象调用类中的方法(对象的行为)。对象被创建后,可以使用运算符“.”调用创建它的类中的方法,从而产生一定的行为功能。
         ③体现封装 。当对象调用方法时,方法中出现的成员变量就是指该对象的成员变量。类的方法可以操作成员变量,当对象调用方法时,方法中出现的成员变量就是指该对象的成员变量。

       当对象调用方法时,方法中的局部变量被分配内存空间。方法执行完毕,局部变量即刻释放内存。 局部变量声明时,如果没有初始化,就没有默认值,因此在使用局部变量之前要先为其赋值。
 

(三)类与对象的关系

  • 类是对一类事物的描述,是抽象的

  • 对象是一类事物的实例,是具体的

  • 类是对象的模板,对象是类的实体

具体代码:

public class A {
    int age;
    String name;


    public void show( ) {
        System.out.println("name:"+name+"  age:"+age);
    }
}







public class TestA {
    public static void main(String[] args) {
        A a=new A();//创建对象
        new A();//创建匿名对象
        //使用对象
        a.name="张珊";
        a.age=13;
        //使用对象的方法
        a.show();
        //对象名中存储的是什么呢?
        System.out.println(new A());//A@6f580c3a
        System.out.println(a);//A@7d8aecf1
        int []aa=new int[5];
        System.out.println(aa);//[I@2bca029b
        /*
        可知:
        类、数组都是引用数据类型,引用数据类型的变量中存储的是对象的地址,或者说指向堆中对象的首地址。
        A@6f580c3a等不是是对象的地址,因为Java是对程序员隐藏内存地址的,不暴露内存地址信息,
        所以打印对象时不直接显示内存地址,而是JVM帮你调用了对象的toString方法(此方法可改写),
        将对象的基本信息转换为字符串并返回,默认toString方法返回的是“对象的运行时类型@对象的hashCode值的十六进制值”,

        */
    }
}

代码效果:

(四)思维脑图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘 关

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值