对面向对象的理解(java)
1,面向对像(oop)
面向对象:一切皆对象,更注重事物,自己的事情自己干。
例如:要把大象放到冰箱里应该怎么做?很多人应该会想到,首先把冰箱门打开、然后把大象放进去、最后把门关上。这样就把大象放进去了。从上面的叙述我们可以得出从把冰箱门打开、然后把大象放进去、最后把门关上,这其实就是一个过程,最后的结果就是把大象放到了冰箱里。在这个过程中我们可以把冰箱看成一个对象而打开冰箱门,把大象放进去,然后把冰箱门关上,我们都可以把这一系列动作看成是冰箱这个对象的方法,而我们要把大象放到冰箱里我们只需要调用冰箱的这些方法就行了,至于说冰箱怎么实现这些方法的你没有必要知道,你所要知道的就是结果:大象放到了冰箱里。这就是面向对象。
优点:代码耦合性低,代码重用性高,易于扩展和维护。低耦合,高内聚。
面向对象的语言重用性比较高,开发效率高。
缺点:代码运行效率低。
抽象:把一个具体的事物抽象成一个类(文件)。
属性(静态):定义在类中的变量。
行为(动态):定义在类中的方法。
代码理解:
package com;
/*
* 类:
* 把一个事物抽象一个类(抽象:在抽象的过程中,使用到什么就抽象什么)
* -在定义类时,类中只能包含属性和行为
* -属性(静态):定义在类中变量
* -属性在定义时,系统会默认进行初始化
* -数值:0
* -char:'\0'
* -boolean:false
* -引用数据类型:null
* -行为(过程):定义在类中的方法
* -为什么需要定义类?
* -为了保存基本类型无法存储的数据
*
* 对象:
* */
public class Student {//创建一个学生类
//属性
int id;
String name;
char sex;
int age;
//行为
void eat() {
System.out.println(name + "吃饭!");
}
}
package com;
public class Test {//创建一个测试类
public static void main(String[] args) {
// TODO Auto-generated method stub
//需要保存一个学生的信息
int a = 10;
/*
* 实例,对象(是类中的一个具体实例)
* 创建对象: 类名 对象名 = new 类名();
* - 在栈空间中分配了一块空间 stu
* - new:更具 类 在堆空间分配了一块内存
* - 让栈上分配的stu执行堆空间分配的内存地址
* */
Student stu = new Student();
/*
* 对象的访问:
* 对象名.属性名 : 读写属性
* 对象名.行为 :调用行为
* */
stu.name = "诸葛亮";
stu.age = 22;
stu.eat();
Student stu1 = new Student();
stu1.name = "貂蝉";
stu1.eat();
Student stu2 = null;
stu2.name = "刘备";
}
}
打印结果为:
诸葛亮吃饭!
貂蝉吃饭!