六、面向对象
1、系统结构图(xmind)
2、tips
——1.理解面向对象
乔布斯是这样理解面向对象的:
对象就像人一样,也是活生生的生命。他们有知识,知道怎么完成任务;他们有记忆,可以把发生的事情记下来。而你和他们的互动并不是低层次的,你是与他们在一个高度抽象的层面上互动,就像我们现在的对话一样。
我举个例子来说明。如果我是一个“洗衣”对象,你可以把脏衣服给我,然后告诉我说:“请帮我把这些衣服洗了吧!”而我恰好知道旧金山最好的洗衣房在哪,并且我会说英语,兜里也有美元。于是我出门打了一辆出租车,告诉司机带我去位于旧金山的洗衣房。我到了那里洗好衣服之后,又坐车回到这里。我把洗好的衣服交还给你,说:“你的衣服已经洗好了。”
你并不知道我是怎么做到的。你不知道哪里有洗衣店,也可能只会说法语,或者是兜里没钱,连车都打不了。但是我知道怎么完成这项任务,而你不需要知道任何细节。所有的这些复杂流程都隐藏在我的内部,而我们之间可以高度抽象地互动。这就是对象。他们把复杂过程封装在内部,而对外呈现的接口是高层次的,抽象的。
——2、成员变量和局部变量
——3.匿名对象
栗:
class Car
{
String color = "red";
int num = 4;
public static void run()
{
System.out.println("function run is running!" );
}
}
class CarDemo
{
public static void main(String[] args)
{
//对对象方法仅进行一次调用时,就可以使用匿名对象
new Car().run();
//匿名对象可以作为实际参数进行传递
show(new Car());
}
public static void show(Car c)
{
c. num = 3;
c. color = "black" ;
System.out.println("function show is running!" );
System.out.println(c.num + "..." + c. color);
}
}
运行结果:
——4.封装的表现形式之一——private(私有)
——5.构造函数
1.细节:当一个类没有定义构造函数时,那么系统就会默认给该类加入一个空参数的构造函数。当在类中自定义了构造函数后,默认的构造函数就没有了。
2、构造函数和一般函数在写法上有不同。
在运行上也有不同:
构造函数式在对象一建立就运行,给对象初始化。而一般方法是对象调用才执行,给是对象添加对象具备的功能。一个对象建立,构造函数只运行一次。而一般方法可以被该对象调用多次。
3、什么时候定义构造函数?
当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。
4、构造代码块
作用:给对象进行初始化。对象一建立就运行,而且优先于构造函数运行。
和构造函数的区别:
构造代码块是给所以对象进行初始化。
而构造函数是给对应的对象初始化。
构造代码块中定义的是不同对象共性的初始化内容。
class Person
{
private String name;
private int age;
Person(int age)//局部变量时age,成员变量也是age
{
this.age = age;//this能够很好区分
}
Person(String name)
{
this.name = name;//这里用this表示调用构造方法的对象
}
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public void speak()
{
System.out.println("name="+name+"...age="+age);
show();
}
public void show()
{
System.out.println(this.name);
}
}