JAVA中的类和对象

我们在谈JAVA的时候,常常说到JAVA是一门面向对象的编程语言,那什么是面向对象呐?

面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。

我们完成一件事情可以逐过程,比如我们洗衣服,就会经历下面的每一步:拿个盆子——放水——放衣服——放洗衣粉——手戳——换水——放洗衣粉——手搓——拧干——晾衣服。当然我们也可以逐对象,上面洗衣服的过程就可以简化为:人——衣服——洗衣粉——洗衣机。我们对比一下上面两种洗衣服的步骤就可以发现,面向过程和面向对象都可以帮我们解决问题,但是面向过程解决问题比较繁琐,中间缺失那一步都不行,并且换一个对象比如洗鞋子就要另一种方式,显然在解决实际问题中很不方便。而面向过程就大大解决了问题的解题步骤,他依靠对象之间的相互交互实现,在后面过程的维护和增删都容易实现,上面就是面向对象的好处。

类是什么呐?举个例子,我们将书本、笔、直尺、橡皮檫归类为学习工具,它们就是一个类,类就相当于一系列具有类似特征的相同事物的统称,再比如人、猫、狗...。而在计算机当中,我们将类说为数据类型,比如整型、字符串型、浮点型。只不过这里的数据类型是我们自己定义的,这有点像C语言当中的结构体。就像上面讲的,我们在定义一个类(自定义数据类型)的时候,我们要用到它的属性和行为,比如,定义一个人,我们就需要知道这个人的姓名、年龄、性别、身高、体重...这些我们称为属性,我们还需要知道这个人所具有的的行为:吃饭、睡觉、学习...

创建类:类可以表示成下面的形式(以定义人为列):

class People{
    //属性(或者叫做成员变量)
    String name;        //名字
    int age;            //年龄
    double weight;      //体重
    ...

    //行为(或者叫做方法)
    eat();              //吃饭
    sleep();            //睡觉
    study();            //学习
    ...        
}

class为定义类的关键字, Peopel为类的名字.{}称为类的主体,里面用来存放成员变量,成员方法等

对象

我们既然能用面向对象的思想解决问题时,那么我们就需要对象。那什么是对象呐?对象就是我们在解决问题当中一个个的实例,比如上面洗衣服当中的人、洗衣机、洗衣粉,在JAVA的世界中一切皆为对象。当我们根据人的特征定义好一个人时,我们需要将这个把这个人的信息放在一个具体的人身上,比如张三,那么张三就是我们要的对象。简单来说对象就是类对应的一个具体实例,放在代码上来说,对象就是一个类对应的变量。

类和对象的区别与联系

1.类是抽象的,概念的,代表一类事物,比如人类、动物、工具等

2.对象是具体的,实际的,代表一个具体的事物,比如张三、李思、钱、锤子

3.类是对象的模板,是对象的设计图纸,对象是设计图纸设计出来的一个个具体物件,比如房子

 

知道了类和对象,那怎么创建对象啦 

创建对象(又叫做对象的实例化)

创建方式有两种:

1.先申明再创建:

People people;//声明对象People
people = new People();//创建

 2.直接创建:

People people = new People();

上面的people就是对象(严格说是对象名或者对象引用,new People()创建的对象空间(数据)才是真正的对象)

上面了解了什么是对象和类,我们用一个列子来实现一下对象的访问

public class Class_and_Object {
    public static void main(String[] args) {
        /**
         * 一个老太婆养了两只猫:一只叫做小白,3岁,白色;
         * 另一只叫做小花,100岁,花色。
         * 请编写一个程序,当用户输入小猫名字时就显示该猫的名字、年龄、颜色。如果用户名字输入错误,则显示老太婆没有这只猫
         */
    /**new Cat()意为创建一只猫(猫对象)
       Cat cat1 = new Cat()意为把创建的猫赋给cat1
       cat1就是一个对象(严格的说是一个对象引用或者对象名,new Cat()创建的对象空间(数据)才是真正的对象)
    */
        Cat cat1 = new Cat();
        cat1.name = "小白";
        cat1.age = 3;
        cat1.color = "白色";
        cat1.weight = 10;

        Cat cat2 = new Cat();
        cat2.name = "小花";
        cat2.age = 100;
        cat2.color = "花色";
        cat2.weight = 20;

    //访问对象的属性/行为
        System.out.println("第一只猫的信息:"+cat1.name+" "+cat1.age+" "+cat1.color+" "+cat1.weight);
        System.out.println("第二只猫的信息:"+cat2.name+" "+cat2.age+" "+cat2.color+" "+cat2.weight);
    }
}


//创建一个猫类(创建一个自定义数据类型)
class Cat{
    //属性(成员)变量
    String name;        //名字
    int age;            //年龄
    String color;       //颜色
    double weight;      //体重
    //...

    //行为
    //...

}

结果展示:

总结实例化对象:

  • new关键字用于创建一个对象的实例
  • 使用.访问对象中的属性和方法
  • 同一个类可以创建多个对象

类和对象在内存中的布局

JVM的内存主要由以下几部分组成

  • 栈区:存储函数当前运行的一些临时变量,比如在int x、double f等
  • 堆区:存放对象比如people、cat、dog等
  • 方法区:主要用常量池来存储常量、比如字符串,类加载信息等
  • 程序计数器
  • 本地方法栈

比如定义一个Person类并实例化,看看类和对象在内存中的布局情况。

public class Test{
    public static void main(String[] args){
        Person people = new Person();
    }
}

class Person{
    String name = "李华";
    int age = 20;
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

咸鱼吐泡泡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值