JAVA基础-类和对象-一个对象诞生的过程

在哲学概念范畴的对象,暂且不表。本文所述类和对象都是相对于JAVA程序的观念来说的。
对于大型项目我们往往使用面向对象设计(OOP),也就是面向对象编程。

为对象定义类

类根据对象来定义,对象从类中来创建。
每个对象都可以明确三点东西,他叫啥,他有啥,他能干啥。
在程序上是这样体现的:
明确的标识:每个对象都有一个独特的变量名。
如:圆1。
状态(也叫特征,属性):每个对象的空间里都一些数据空间,存放一些为该对象所有的数据域。
如:圆1具有一个数据域radius。
  矩形1具有两个数据域width和height。
行为 (也叫动作):一个行为是作为一个对象的一个方法而存在的。调用一个方法,就是让对象完成一个行为。
如:圆1调用getArea()获取圆的面积。




类则是在描述对象。
我们使用一个类来定义同一类型的对象。
类就像是一张设计蓝图,蓝图里定义了对象应该具有的数据域和具体可以完成哪些行为。
对象是类生产出的实例,比如圆类创造圆1,圆2…
在很大程度上,类和对象的关系可以看成苹果派配方和苹果派的关系。。。
所以在定义时是照着对象所具有的一些特征来定义的:
对象有对象名,所以对应的类要有个类名,一般来说大写。
对象有属性,在定义类的时候就要有成员变量。
对象有行为,在定义类的时候就要设计好成员函数。
除此之外,类是设计图,但不一定是只造出相同的产品。就好像照着苹果派可以加点允许范围类的小改动做出木糖醇苹果派,超甜苹果派。
这些就需要由类中的构造函数来完成了。

以下为酸辣苹果派对象从类中创建的一个过程。

//苹果派.java
public class 苹果派{
  String 口味 = "甜"public 苹果派(){ //无参构造函数
  }
  public 苹果派(String 口味){
    this.口味 = 口味;
  }
  public String 尝一口(){//尝味道行为
    return 口味;
  }
}



//苹果派test.java
class 苹果派test{
   public static void main(string[] agrs){
    苹果派 果果 = new 苹果派("酸辣");
    System.out.printfln(果果.尝一口());
   }
}
  


1.javac编译编译苹果派test.java文件 生成两个字节码文件
   苹果派test.class 苹果派.class
2.java 运行苹果派test
   JVM模拟CPU,逐条取出苹果派test和苹果派加载(进入方法区)
   JVM在方法区找到主函数main;
3.主函数从方法区进栈,程序开始运行。
4.函数开始执行第一句:苹果派 苹苹 = new 苹果派();
   创建对象时候遇到new操作符,从堆中创建出一块空间并分配地址。
   根据类的定义,先给属性进行一次默认初始化;
   (给口味给了一个null)
5.相应的构造函数从方法区进栈。
6.构造函数初进栈时候,对成员属性进行一次显示初始化,无论他是否赋有值
   (给口味赋值"甜")。
7.执行构造函数的里内容 ,开始针对性初始化:
为了区分是哪个对象调用的这个函数,引入this
   (给口味赋值"酸辣")
8.构造函数执行完毕 弹栈。将对象的地址值赋予左边。
9.在主函数中开辟一个变量名为果果的变量空间,
    存储对象的地址值。
10果果调用.尝一口()方法,方法区的成员函数尝一口进栈
11以就近原则寻找 口味这个变量,局部变量→全局变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值