想要搞清楚什么是面向对象。就需要弄清楚什么是类?什么是对象?什么是属性?什么是行为?
什么是类?
我们笼统的说,类就是有同一特性的事物的统称,它是一种抽象的概念。
比如:人就是一种类,猫、狗等都可以是一种类。
什么是对象?对象又从哪儿来?
对象是从类中来的,这一过程又叫:实例化对象(new一个对象),并且同一个类可以实例化多个对象。所以我们也可以把类当做一个模板。
比如:我有一个狗的类,那我就可以用这个类实例化对象(new一个对象)。
什么是属性?什么是行为?:
每new一个对象,这个对象就都有自己的属性和行为。属性就是对象的成员变量(普通成员变量和静态成员变量),我们有时候也叫它字段。它表示这个对象的特征(比如:name,age)。
行为就是对象方法(也叫函数),而方法则能描述这个对象的行为(比如:睡觉,吃饭)。
下面就用一个例子来具体描述面向对象:
我们先创建一个Dog的类:
public class Dog {
//成员变量(又叫属性,字段):表示对象的特征
private String name; //名字
private int age; //年龄
//由于name和age被private (私有化),这样就不能再类外使用它,所以这里写四个公共接口
//获取这个对象的name和age
public String getName() {
return name;
}
public int getAge() {
return age;
}
//设置对象的name和age
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
//方法:表示对象的行为
public void eat(){
System.out.println(name+"正在吃饭");
}
public void sleep(){
System.out.println(name+"已经"+age+"岁了,它正在睡觉");
}
}
在上面的代码中使用了private ,它的作用就是使它所修饰的成员变量私有化(也可以叫封装),让private 所修饰的成员变量只能在类中使用,这样写的好处就是使代码更安全,也变得更加方便对它维护。同时也是为了使模块变得独立。
接下来,我们就可以new一个对象,给它赋予相应的 name 和 age 。然后查看它们的行为:
public class TestDemo {
public static void main(String[] args) {
//new一个对象(实例化对象)
Dog dog1 = new Dog();
//我们为它取一个属于它的名字,并记录它的年龄。
dog1.setName("大黄");
dog1.setAge(8);
//调用对象的行为,看看它在做什么。
dog1.eat();
dog1.sleep();
//又重新new一个新对象(实例化对象)
Dog dog2 = new Dog();
//我们也为它取一个属于它的名字,并记录它的年龄。
dog2.setName("小黑");
dog2.setAge(2);
//同样调用对象的行为。
dog2.eat();
dog2.sleep();
}
}
程序运行结果:
在上面代码的运行结果中,我们可以看到两个对象都拥有了各自的 name 和 age。
同时通过方法,我们也查看到了它们的行为。



