你好呀,我是沉默王二,CSDN 排名前十的博客专家。这是《教妹学 Java》专栏的第二十三篇,我们来理解一下 Java 中的对象和类,以及它们俩的概念——什么是对象?什么又是类?
本专栏中的代码已收录到 GitHub github.com/itwanger ,里面还有我精心为你准备的一线大厂面试题。
————————————————
三妹上的洛阳理工,校区离我家很近, 所以每逢周末她都会来我家,让我辅导她学习 Java。作为一名拥有十余年编程经验的程序员,以及父母给我们的这份血缘关系,我觉得义不容辞。
“二哥,这次我们要学习的内容是‘对象和类’,对吧?”看来三妹已经提前预习了我上次留给她的作业。
“是的,三妹。Java 是一门面向对象的编程语言,所以我们需要使用对象和类来设计程序。 ”我面带着朴实无华的微笑回答着她,“Java 中的对象既是物理实体也是逻辑实体,而 Java 中的类仅仅是逻辑实体。”
01、Java 中的对象是什么
具有状态和行为的实体被称为对象,例如铅笔、苹果、书本、书包、黑板,这些是物理存在的,有形的。
也可以是逻辑上存在的,我们按照想象力把它设计出来的。比如说支付宝、微信。
对象具有三种特征:
状态:描述了对象给人的直观印象(名词),比如说人的名字、年纪、性别。
行为:表示对象具有的功能(动词),比如说人可以吃饭、睡觉、打豆豆。
定义:Java 虚拟机在内部会使用一个唯一标识(对外部是不可见的)来标记每一个对象。
02、Java 中的类是什么
类可以看做是创建对象的一个模板,我们来通过一个简单的例子理解一下类的定义。
/** * @author 沉默王二,一枚有趣的程序员 */ public class Person { private String name; private int age; private int sex; private void eat() { } private void sleep() { } private void dadoudou() { } }
一个类可以包含:
字段
方法
构造方法
在 Person 类中,字段有 name、age 和 sex,它们也称为实例变量或者成员变量——在类内部但在方法外部,实例变量在编译时不占用内存空间,在运行时(对象实例化 new Person())获取内存——这也正是它被称作“实例”变量的原因。
方法有 eat()、sleep() 和 dadoudou(),表示 Person 这个对象可以做什么。
咦,没有构造方法呢?的确在 Person 类的源码文件(.java)中看不到,但在反编译后的字节码文件(.class)中是可以看得到的。
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package com.itwanger.twentythree; public class Person { private String name; private int age; private int sex; public Person() { } private void eat() { } private void sleep() { } private void dadoudou() { } }
public Person(){} 就是默认的构造方法,因为是空的构造方法(方法体中没有内容),所以可以缺省。