Java类和对象
对象
例如:
1)狗是一个对象,它有颜色、名字、品种等属性,还有摇尾巴、吃饭、汪汪叫等行为
2)学生是一个对象,TA有学号、姓名、所在班级等属性,还有学习、提问、走路、吃饭等行为
狗、学生只是抽象的描述,这个抽象的描述称为 “类”,类是一个模板,它描述一类对象的属性和行为
狗狗小白、狗狗小花 or 张三同学、李四同学等,这些具体的个体称为“对象”,对象是类的实例
Java 是面向对象的编程语言,对象就是面向对象程序设计的核心
(所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念)
对象有以下特点:
- 对象具有属性和行为
- 对象具有变化的状态
- 对象具有唯一性
- 对象都是某个类的实例
面向对象
从字面上分析就是人朝着对象,也就是人关注着对象。对于计算机而言,它形象的表达出人类更关注一个具体事物的详细信息
例如:【 购买手机 】
售货员:您想买个什么样的手机?
买家:我想买一个可以玩游戏(行为)、内存大一点的大屏幕手机(属性)
—— 此时可将【可以玩游戏、内存大一点的大屏手机】这个信息称为类
售货员了解买家需求后,拿出一部屏幕6.1英寸,内存256G,可以玩游戏的iPhone13
—— 此时可将iPhone13手机称为对象
如果买家对iPhone13这个手机对象不满意,还可以要求售货员换一个手机对象。如:小米12、华为P50等其它符合要求的手机对象
此时可将这整个购买手机的过程称为面向对象
类
例如:
每个人都有身高、体重、年龄、血型等属性,有劳动、直立行走、思考问题、使用工具等行为。每个人都具有“人类”这个类别的属性与行为
熊猫不具备“人类”这个类别的属性与行为,它不会直立行走、使用工具等,所以熊猫不属于“人类”
“人类”仅是一个抽象的概念,是不存在的实体
但具备“人类”这个类别属性与行为的人是实际存在的实体,每个人都是“人类”这个类别的对象
也就是说:类是概念模型,它定义对象的所有属性和行为。即类是描述了一组有相同属性和相同行为(方法)的一组对象的集合,对象是一组变量和相关方法的集合
对象的状态和属性称为变量,对象的行为称为类的方法。比如:“人”这个对象都具有的行为是“吃饭”,因此吃饭就是“人类”类别的一个方法
| 类 | 对象 |
| 人类 | 教室里的学生妞妞 |
| 正在讲课的老师Alice | |
| 汽车 | 一辆黄色的宝马跑车 |
| 一辆白色的林肯轿车 | |
| 动物 | 一只叫“小白”的雪纳瑞 |
| 一只叫“喵喵”的波斯猫 |
所有的Java程序都基于类,类是Java中一种重要的引用数据类型,也是组成Java程序的基本要素
例如:
// 定义一个简单的Dog类 public class Dog { String colour; int size; int age;
// 吃饭的方法 void eat() { } // 跑的方法 void run() { } // 睡觉的方法 void sleep() { } }
// 定义一个简单的Telephone类 public class Telephone { float screen; double ram; void call() { System.out.println("Telephone可以打电话"); } void surfing() { System.out.println("Telephone可以上网"); } }
Java 类名的命名规则:
- 类名应该以下划线(_)或字母开头,最好以字母开头
- 第一个字母大写,如果类名由多个单词组成,则每个单词的首字母最好都大写
- 类名不能为Java中的关键字。如:boolean、this、int等
- 类名不能包含除了下划线(_)和美元符号($)字符以外的特殊字符
创建对象
语法:类名 对象名 = new 类名();
在Java中,使用关键字 new 来创建一个新的对象,并调用构造方法初始化对象
例如:
Telephone phone = new Telephone();
new Telphone() 就相当于对一个类进行了实例化,只不过把这个对象赋给了对象名这个变量。对对象名进行操作,就等于对这个对象进行操作
使用对象
- 引用对象的属性:对象名.属性;
- 引用对象的方法:对象名.方法名();
例如:
package common; public class Telephone { float screen; double ram;
void call() { System.out.println("Telephone可以打电话"); } void surfing() { System.out.println("Telephone可以上网"); } public static void main(String[] args) { Telephone phone = new Telephone(); // 给screen属性赋值 phone.screen = 6.2f; // 调用call()方法 phone.call(); } }
构造方法
语法:
构造方法是定义在Java类中的一个用来初始化对象的特殊方法
也就是说,在创建一个对象的时候,必须要调用构造方法(在创建对象 [new 运算符] 之后自动调用)
Java中的每个类都有一个默认的构造方法,每个类可以具有多个构造方法,但要求它们各自包含不同的方法参数
构造方法有以下特点:
- 方法名必须与类名相同
- 可以有 0 个、1 个或多个参数
- 没有任何返回值,包括 void
- 默认返回类型就是对象类型本身
- 只能与 new 运算符结合使用
例如:
public class Telephone { // 这个构造方法有一个参数:screen public Telephone(double screen) { System.out.println("手机屏幕尺寸是" + screen + "英寸"); } public static void main(String[] args) { Telephone myTelephone = new Telephone(6.2); } }
要在不同的条件下使用不同的初始化行为创建类的对象,这时候就需要在一个类中创建多个构造方法
例如:
1)先在 Worker 类中定义两个构造方法
public class Worker { public String name; private int age; // 定义带有一个参数的构造方法 public Worker(String name) { this.name = name; } // 定义带有两个参数的构造方法 public Worker(String name,int age) { this.name = name; this.age = age; } public String toString() { return "我叫" + name + ",今年" + age + "岁"; } }
Tips:
Object 类具有一个 toString() 方法,该方法是个特殊的方法,创建的每个类都会继承该方法,它返回一个 String 类型的字符串
如果一定类中定义了该方法,则在调用该类对象时,会自动调用调用该类对象的 toString() 方法返回一个字符串。使用 System.out.prinln(对象名) 就可以将返回的字符串内容打印出来
2)在 TestWorker 类中创建 main() 方法作为程序入口,在 main() 方法中调用不同的构造方法实例化 Worker 对象,并对该对象中的属性进行初始化
import common.Worker; public class TestWorker { public static void main(String[] args) { // 调用带有一个参数的构造方法 Worker worker1 = new Worker("张三"); System.out.println(worker1); // 调用带有两个参数的构造方法 Worker worker2 = new Worker("李四",37); System.out.println(worker2); } }
该示例定义了两个构造方法,分别是无参构造方法和有参构造方法
在一个类中定义多个具有不同参数的同名方法,这就是方法的重载
运行结果:

Worker1 对象并未指定 age 属性值,因此程序会将其值采用默认值 0


浙公网安备 33010602011771号