Java基础知识:类和对象的关系、对象的创建和使用

1. 概念

:由数据成员函数成员封装而成。

  •   在Java语言中数据成员称为域变量、属性、成员变量等;(静态特征)
  •   函数成员称为成员方法,简称为方法。(动态特征)
//举例:定义圆柱体类。
class Cyli {           //定义圆柱体类Cyli
    double rad;        //声明成员变量rad
    int height;        //声明成员变量height
    double pi=3.14;    //声明数据成员pi并赋初值
    void area( ) {         //定义成员方法area(),计算底面积
         System.out.println("底面积="+ pi*rad* rad);
    }
    void volume( ) {       //定义成员方法volume (),计算体积
         System.out.println("体积="+((pi*rad* rad)*height));
   }
}

对象:由一组属性和一组行为构成的。对象的类型称为类。

  • 对象之间靠互相传递消息而相互联系,调用某个对象的方法就是向该对象传送一个消息,要求该对象实现某一行为(功能)。
  • 一个对象的生命周期:创建 → 使用 → 销毁。
  • 例:对于学籍管理系统,学生是一个类,而一个具体的学生则是学生类的一个实例;在立体几何中,圆柱体是一个类,而一个具体大小的圆柱体则是圆柱体类的一个实例。

关系

  • 可以将对象理解为一种新型的变量。
  • 类是一种数据类型,对象就是该类型的一个变量,变量名是某个具体对象的标识。
  • 类与对象的关系相当于普通数据类型与其变量的关系

2. 对象的创建

// 如:创建圆柱体类Cyli的一个对象(实例)
 Cyli  volu;           //声明指向对象的变量volu,初值为null
 volu = new Cyli();       //用new创建新对象,并让volu指向它

// 或
Cyli volu = new Cyli();  //声明并创建新的对象,并让volu指向该对象

步骤

1、声明指向对象的“类”类型的变量

  • volu视为“对象的名称”,是引用类型变量,非对象本身,存放在栈内存中。

2、创建新的对象,并让volu指向该对象

  • 用new创建新的对象,对象存放在堆内存中。

注意

1、当一个对象被创建时,会对其中各种类型的成员变量按自动进行初始化。除基本类型之外的变量都是引用类型。

变量类型

初始值

变量类型

初始值

byte

0

double

0.0D

short

0

char

‘\u000’(表示为空)

int

0

boolean

false

long

0L

String

null

float

0.0F

所有引用类型

null

2、若要自己初始化对象成员的值,则可以使用构造函数进行初始化。例如:

// 例:利用构造方法来初始化圆柱体类Cyli的成员变量。
class Cyli {
   private double  rad;
   private int  height;
   private double  pi = 3.14;
   Cyli(double r, int h) {          //定义构造方法
     rad=r; height=h;
   }
   double area() {
     return pi*rad*rad;  
   }
   double volume() {
     return area()*height;  
   }
}
public class Demo {
   public static void main(String[ ] args) {
     Cyli volu = new Cyli(3.5, 8);  //创建对象并调用构造方法
     System.out.println("圆柱底面积="+volu.area());
     System.out.println("圆柱体体积="+volu.volume());
   }
}

//输出
>>>圆柱底面积=38.465
>>>圆柱体体积=307.72

3、同一类的不同对象分配在不同的堆内存中。例如:

// 例:以圆柱体类Cyli的对象为参数进行方法调用,并分析程序中对象的比较。
class Cyli {
    private static double pi = 3.14;
    private double rad;
    private int height;
    public Cyli(double r, int h) {
       rad=r; height=h;
    }
   public void compare(Cyli volu) {
      if(this==volu) 
         System.out.println("2个对象指向同一对象");
      else
         System.out.println("2个对象指向不同对象");
   }
}
public class Demo2 {
   public static void main(String[ ] args) {
      Cyli  volu1 = new Cyli(1.0, 2);
      Cyli  volu2 = new Cyli(1.0, 2);
      Cyli  volu3 = volu1;
      volu1.compare(volu2);       //比较volu1与volu2是否相等
      volu1.compare(volu3);       //比较volu1与volu3是否相等
   }
}

//输出
>>>2个对象指向不同对象
>>>2个对象指向同一对象

如图,每次用new新建一个对象时,会单独分配一块空间给该对象,因此volu1和volu2指向不同内存空间,即指向不同对象

volu3 = volu1说明两个变量的值相等,由于两个都是引用型变量,所以volu1和volu3指向同一块内存空间,即指向同一个对象。

3. 对象的使用

创建对象后,可访问对象的成员,形式如下:

              对象名.对象成员

如:   volu.rad = 2.8;

          volu.area( );

          volu.inpu(2.5, 3, 3.14);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值