Core Java 类和对象相关
面向对象编程:程序 = 数据结构 + 算法,先思考如何组织对象,再思考如何操作数据。
面向过程编程:程序 = 算法 + 数据结构,先思考如何操作数据,再思考如何组织数据。
例子:吃饭
面向过程时:先洗菜,再烧饭,最后吃饭,一步一步地有先后顺序的尝试解决问题。
面向对象时:人吃饭,需要有人、饭、菜这些类,人具备洗菜、烧饭、吃饭的行为,
public class HumanEatTest {
public static void main(String[] args) {
Rice rice = new Rice();
rice.setName("香米");
Vegetable vegetable = new Vegetable();
vegetable.setName("青菜");
Human human = new Human();
human.clean(rice,vegetable);
human.cooking(rice,vegetable);
human.eat(rice,vegetable);
}
}
____________________________________________________________________________________
public class Human{
public void eat(Rice rice,Vegetable vegetable){
System.out.println("人吃" + rice.getName() + "和" + vegetable.getName());
}
public void clean(Rice rice,Vegetable vegetable){
System.out.println("人洗" + rice.getName() + "和" + vegetable.getName());
}
public void cooking(Rice rice,Vegetable vegetable){
System.out.println("人煮:" + rice.getName() + "和烧" + vegetable.getName());
}
}
____________________________________________________________________________________
public class Rice{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
____________________________________________________________________________________
public class Vegetable{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
思考问题的方式由面向过程转变成面向对象还是需要经验积累的,熟能生巧,先分析需要哪些类,这些类中应该具备哪些方法,每个方法对应做什么事情,在每个方法的时候再采用面向过程的思维去做,最后通过对象调方法来解决问题。
类和类之间存在的关系:
关系 | 说明 | 例子 |
---|---|---|
依赖(use-a) | 一个类的方法操纵了另一个类的对象 | human类依赖于rice类 |
继承(is-a) | 一个类和另一个类满足“子父”关系 | 黑米是米的一种,blackRice继承rice类 |
聚合 (has-a) | 一个类中的成员属性位置包含另一个类 | body类中包含leg类 |
回调:回调( callback) 是一种常见的程序设计模式。在这种模式中, 可以指出某个特定事件发
生时应该采取的动作。 例如,可以指出在按下鼠标或选择某个菜单项时应该采取什么行动。