前言
示例:张老太养了两只猫猫:一只名字叫小白,今年3岁,白色。还有一只叫小花,今年100岁,花色。请编写一个程序,当用户 输入小猫的名字时,就显示该猫的名字,年龄,颜色。如果用户输入的小猫名错误,则显示张老太没有这只猫猫。
方法一:单独变量来解决
public class Object01 {
public static void main(String[] args) {
String cat1Name = "小白";
int cat1Age = 3;
String cat1Color = "白色";
String cat2Name = "小花";
int cat2Age = 100;
String cat2Color = "花色";
}
}
从上面代码来看,单独的变量是可以解决这个需求的,但是如果需求变更,就会面临一些问题:
- 如果猫数量很多怎么办?
- 如果猫多了体重、爱好等该怎么解决?
我们发现使用单独的变量来操作不利于数据的管理(把一只猫的信息拆解了)。
方法二:数组
public class Object02 {
public static void main(String[] args) {
String []cat1 = {"小白","3","白色"};
String []cat2 = {"小花","100","花色"};
}
}
我们发现使用数组比单独的变量要好一些,毕竟使用一个数组就可以管理一只猫的信息,但是依然存在问题:
- 用String类型的数组,体现不出数据类型,比如年龄应该用int
- 在取内容时只能从数组的下标来取,失去了变量名和内容的对应关系
- 不能体现猫的行为
单独的定义变量解决、使用数组解决,不利于数据的管理、效率低。
一、类、对象是什么?
类与对象的关系示意图:
- 类就是数据类型,比如Cat
- 对象就是一个具体的实例
二、使用OOP面向对象解决
import java.util.Scanner;
class Cat {
String name;
int age;
String color;
}
public class Object01 {
public static void main(String[] args) {
Cat cat1 = new Cat();//创建第一只猫,把这只猫赋给cat1
cat1.name = "小白";
cat1.age = 3;
cat1.color = "白色";
Cat cat2 = new Cat();//创建第二只猫,把这只猫赋给cat2
cat2.name = "小花";
cat2.age = 100;
cat2.color = "花色";
//cat1与cat2都是一个对象
Scanner scanner = new Scanner(System.in);
System.out.print("请输入猫猫的姓名:");
String inputName = scanner.nextLine();
if ("小白".equals(inputName)) {
System.out.println("姓名" + cat1.name + "," + "年龄" + cat1.age + "," + "颜色" + cat1.color);
} else if ("小花".equals(inputName)) {
System.out.println("姓名" + cat2.name + "," + "年龄" + cat2.age + "," + "颜色" + cat2.color);
} else {
System.out.println("您没有这只猫猫!!");
}
}
}
总结
- 类是抽象的,概念的,代表一类事物,比如人类、猫类…,即它是数据类型
- 对象时具体的,实际的,代表一个具体事物,即是实例
- 类是对象的模板,对象是类的一个个体,对应一个实例