何为对象?
学习Java就肯定知道一句 "万物皆对象",那么这个对象是什么呢?肯定有不少人对这个对象很迷惑,当然对象不可能是你所理解的女朋友或者男朋友,这个对象指的是现实生活中真实存在的具体的事物。就比如说,人、树、电视等等。具体一点,我们本身就是一类对象,我们都属于人类这个大对象。每个对象都有它的属性和行为。属性指的是这个事物的一些属性,就字面意思;行为指的是这个事物能做什么或者说要做什么。就比如说汽车,它的属性有颜色、型号、厂商等等,它的行为有行驶等。通俗来讲,对象就是现实中的东西,它需要明确两点:是什么,做什么。(我是谁?我要做什么?)
何为面向对象?
所谓面向对象就是将一个事物的属性和行为抽离出来单独成一个类,然后如果需要使用这个事物就调用这个类,如果需要这个事物干什么事就通过这个类调用其中的方法(行为)。简单来说就是站在领导者视角,如果需要干什么事,就去招(创建)一个能干这个事的人(泛指可以是物),你指挥这个人干。
比如你想要开汽车,那么肯定要有一辆汽车,这时就需要创建一个汽车对象。这个汽车对象具有颜色、型号等属性和行驶行为。对象创建出来之后你就有了汽车,就可以行驶汽车。
为什么要面向对象编程?
提到面向对象编程就不得不提面向过程,面向过程和面向对象编程是解决问题的两种方式(可能还有一种方式叫面向函数),它们两个各有各的有点和适用方向,不能一定的说谁好谁坏。回归问题,为什么要面向对象?因为便利,可以有效的减少重复的工作量。比如小红,小绿,小蓝都是猫,它们都有名字颜色品种等属性,都可以做东西,喵喵叫等动作,如果不面向对象编程,那可能你需要创建三个容器来分别存入三只小猫的属性和动作,而且还容易出现数据类型冲突问题,但如果面向对象编程,你就可以只创建一个猫对象,然后new三个对象就可以了。如果后面还需要添加更多的猫,那么非面向对象就要修改容器大小,而面向对象编程就只需要创建新的对象就行。
// 非面向对象
public static void main(String[] args) {
String[] name = new String[3];
int[] age = new int[3];
String[] brand = new String[3];
String[] color = new String[3];
name[0] = "小红";
name[1] = "小蓝";
name[2] = "小绿";
age[0] = 1;
age[1] = 2;
age[2] = 3;
brand[0] = "狸花";
brand[1] = "布偶";
brand[2] = "暹罗";
color[0] = "白色";
color[1] = "白棕";
color[2] = "黑色";
}
// 面向对象
// 猫对象类
public class Cat {
private String name;
private int age;
private String brand;
private String color;
// 空参构造
public Cat() {
}
//全参构造
public Cat(String name, int age, String brand, String color) {
this.name = name;
this.age = age;
this.brand = brand;
this.color = color;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
// 测试函数
public static void main(String[] args) {
// 构建Cat类对象 实例化
// 可以通过调用set方法设置具体属性
Cat cat = new Cat();
cat.setAge(2);
cat.setBrand("布偶");
cat.setColor("白棕");
cat.setName("狗蛋");
// 可以优化为一行代码----构造方法
// 也可以使用全参构造直接赋值
Cat cat1 = new Cat("小蓝",2,"狸花","蓝色");
Cat cat2 = new Cat("小红",2,"狸花","蓝色");
Cat cat3 = new Cat("小绿",2,"狸花","蓝色");
}