Java中的类(class)(一)

Java中的类(class)(一)

​ Java是一门面向对象的语言。这一点听起来很高大上,但具体什么是面向对象呢?

​ 高级语言中,C语言是面向过程的语言,在源码的形式上,C语言的基本单位是函数,函数描述的是解决问题的过程,C语言的执行从主函数开始,调用外部函数、编写子函数等等。

​ 而在Java语言,是面向对象的语言,在源码形式上,以类为基本单位,类中既有该类的静态属性(变量),又有该类的动态方法(函数),解决问题的过程包含在某类中的方法中。

类的组成

class Cat{		//定义一个Cat的类
    int age;	//Cat的年龄
    String food;//Cat的食物
    
    void eat()	//Cat的吃东西方法
    {
         System.out.printf("The Cat is eating!");
    }
}

​ 类的组成有静态的属性和动态的方法。在上面一段代码中,首先定义了一个关于猫的"类(class)"。在类中,定义了两个变量,一个是猫的年龄(int)一个是猫的食物(String),这是静态属性;其次是一个猫吃东西的方法eat(),这是这个类的动态方法。

Java中,函数通常称之为方法。

类->对象

  1. 类是Java语法中基本单位是类,但java程序的执行也是由主函数开始执行的;

    主函数的形式通常为public void main(String[] args){}

  2. 在主函数中,需要我们用建立一个对象。那么,如何建立对象呢?

    如下,在主函数中通过语句Cat Tim = new Cat();建立了一个叫Tim的对象,而Cat是我们刚刚写的一个"类",即通过Cat的类定义了一个对象,这个过程可以类比于变量的定义,如:int i = 1;

public class main(){
    public void main(String[] args){
        Cat Tim = new Cat();	//创造了一个叫Tim的Cat对象 
    }
}

定义对象Tim,这一过程是如何实现的呢?
j建立对象
​ 如上图,使用Cat Tim后,在栈内存中分配一块内存Tim,new是关键字,new Cat()在堆内存中分配一块内存,其中包含Cat类的全部要素,如age、food变量。

​ 此时如果要对Tim类的内的量进行修改,比如给Tim这只猫的年龄设置为三岁,就要通过"."访问其内部的age变量:Tim.age = 3;效果如下,其中Tim的值并没有改变,而是堆内存中的age变量的值改变了。

age

​ 这里的Tim是一个地址,地址指向堆中一块内存。在C语言中,由地址指向一块内存,必然涉及到指针的问题。但在Java中没有指针,这里的Tim 指针不仅直接执行堆内存,也能代表这块内存,二者是等价的。

​ 为了理解这一原理,我们可以进行一个另一个创造对象方式测试;

public class main(){
    public void main(String[] args){
        Cat Tim = new Cat();	//创造了一个叫Tim的Cat对象 
        Cat Jim = new Cat();	//创造了一个叫Jim的Cat对象 
    }
}

在这里插入图片描述

​ 如上图,虽然两行代码都是= new Cat();,但是两个地址并没有指向同一块堆内存,而是指向两块堆内存。

​ Tim和Jim是两个地址,但能直接代表堆内存。如果此时我们将两只猫的年龄分别设置为3和5,二者分别将两块堆内存中的age修改为3、5;

​ 我们可以试试另一种创造对象方式;

public class main(){
    public void main(String[] args){
        Cat Tim = new Cat();	//创造了一个叫Tim的Cat对象 
        Cat Jim = Tim;	//将Tim的值(一个地址)赋给Jim
    }
}

内存3
​ 可以看到,这样的方式,Jim和Tim最终指向同一块堆内存。此时将Tim中的age修改为3,那么Jim中的age也会变成3

在上面都只是用图形表示出了任何使用类建立内存,实际上也可以将代码写入程序并运行,以检验上述原理。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值