1.什么是面向对象
以实际生活的案例来举一个例子,比如说洗衣服。
如果是面向对象
的编程方式,我们会拆分成人和洗衣机两个对象,再分析每一个对象,它需要做哪些事情。
人在其中需要做这三件事:
- 打开洗衣机
- 放衣服和洗衣液
- 洗完衣服后拿出衣服。
洗衣机在其中只需要做一件事情:
- 根据洗衣模式洗衣服
如果是面向过程
的话,我们会将这个洗衣服任务拆解成一系列的步骤,每一个步骤就是一个函数。
-
第一步,打开洗衣机;
-
第二步,放衣服和洗衣液;
-
第三步,选择洗衣模式,开始洗衣;
-
第四步,等洗完,拿出衣服。
所以面向对象的思维方式,它更加注重事情有哪些参与者,有哪些对象,这些对象各自需要做些什么事情。将其拆解成一个个模块和对象,这样会更易于维护和拓展。
面向对象与面向过程的区别:
2.面向对象的三大特征
2.1封装性:
2.2继承性和多态性:
关于类继承的几点说明:
- 子类继承父类中非私有的成员变量和成员方法
- Java不支持多继承,但支持多层继承
- 子类中可以定义与父类中的名字,参数列表,返回值类型都相同的方法—重写(覆盖)
注意
:private方法不能被覆盖;
父类中static方法不能被覆盖,但可以被继承- 在子类中可以使用
super
关键字来访问父类中的成员变量 格式是:super.成员变量名,调用父类中被覆盖的方法 格式是:super.方法名,以及调用父类的构造方法 格式是:super.( ) —>这个是调用父类的无参构造方法)this("Tom",123)
是调用本类的其他构造方法- 先调用父类的构造函数,再调用子类的构造方法
多态性(:
- 指由继承而产生的相关的不同的类
- 多态分为
行为多态
和对象多态
举个例子:
我们说Person类是Student类和Teacher类,用Person类创建Student类和Teacher类的对象,就有如下代码:
public class Test{
public static void main(String[] args){
Person s = new Student(); //对象多态,编译看等号左边,运行看等号右边
s.run(); //行为多态,用对象调用成员方法编译和运行都看左边,
//即运行结果是父类中的成员方法所输出的值
Person t = new Teacher(); //对象多态
t.run(); //行为多态
根据对象的实际类型调用run( )
方法,这就是多态
2.3继承性和多态性的举例: