开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
类与对象
问题引出
看一个养猫问题
张老太养了两只猫猫:一只名字叫小白,白色,今年三岁,还有一只叫小花,今年一百岁,花色。请编写一个程序,当用户输入小猫名字的时候,就显示该猫的名字,年龄,颜色。如果用户输入的小猫名错误,就显示,张老太没有这只猫猫
使用现有技术解决Object01.java
(1)单独的定义变量模块解决
使用数组解决
(2)现有技术解决的缺点分析
不利于数据的管理,效率低
==》类与对象
Object01.java
public class Object01 {
public static void main(String[] args) {
/*
张老太养了两只猫猫:一只名字叫小白,白色,今年三岁,还有一只叫小花,今年一百岁,花色。
请编写一个程序,当用户输入小猫名字的时候,就显示该猫的名字,年龄,颜色。
如果用户输入的小猫名错误,就显示,张老太没有这只猫猫
*/
//单独变量来解决,不利于数据的管理(把一只猫的信息拆解)
// String cat1Name = "小白";
// String cat2Name = "小花";
//
// int cat1age = 3;
// int cat2age = 100;
//
// String cat1color = "白色";
// String cat2color = "花色";
//
// //数组 ==》数据类型体现不出来,只能通过下标获取信息,造成了变量名和内容对应关系不明确
// //不能体现猫的行为
//
//
// String[] cat1 = {"小白","3","白色"};
// String[] cat2 = {"小花","100","花色"};
//使用OOP面向对象解决
//实例化一只猫【创建一个对象】
//1.new Cat() 创建一只猫
//2.Cat cat1 = new Cat();把创建的猫赋给cat1
//cat1就是一个对象,cat2也是一个对象(猫对象)
Cat cat1 = new Cat();
cat1.name = "小白";
cat1.age = 3;
cat1.color = "白色";
//第二只猫,叫cat2
Cat cat2 = new Cat();
cat2.name = "小花";
cat2.age = 100;
cat2.color = "花色";
//怎么访问对象的属性
System.out.println("第一只猫的信息是" + " " + cat1.name + " " + cat1.age + " " + cat1.color + " ");
System.out.println("第二只猫的信息是" + " " + cat2.name + " " + cat2.age + " " + cat2.color + " ");
}
}
//使用面向对象的方式来解决养猫问题
//定义一个猫类-》相当于一个自定义的数据类型
class Cat{
//属性
String name;//名字
int age;//年龄
String color;//颜色
//行为
}
java的设计者引入类和对象,根本原因就是现有的技术,不能完美的解决新的需求
一个程序就是一个世界,有很多事务(对象【属性,行为】)
注意:从猫类到对象,目前有几种说法:
- 创建一个对象
- 实例化一个对象、
- 把类实例化。。。。
当然,上面的猫可能是鱼,狗,人……Java最大的特点就是面向对象
快速入门
Object01.java
类与对象的区别和联系
通过上面的例子可以看出
- 类是抽象的,概念的,代表一类事物,比如人类,猫类……即它是数据类型
- 对象是具体的,实际的,代表一个具体事务,即是实例
- 类是对象的模板,对象是类的一个个体,对应一个实例
对象在内存中的存在形式
属性
属性/成员变量
基本介绍
从概念或叫法上看:成员变量 = 属性 = field(即 成员变量是用来表示属性的,我们统一先叫属性)案例演示Car(name,price,color)
属性是类的一个组成部分,一般是基本数据类型,也可是引用类型(对象,数组)比如我们前面定义的猫类的int age 就是属性
属性细节说明
-
属性的定义语法同变量,示例:访问修饰符 属性类型 属性名;访问修饰符介绍:控制属性的访问范围,有四种访问修饰符
- public
- protected
- 默认
- private
-
属性的定义类型可以为任意类型,包含基本类型或引用类型
-
属性如果不赋值,有默认值,规则和数组一致
访问属性
基本语法:对象名.属性名
案例演示赋值和输出
类与对象的分配机制
看一个思考题
我们定义一个人类(Person)(包括:名字,年龄)(Object03.java)
今天的分享就到这儿里,你学会了吗?