面向对象:它是把数据及对数据的操作方法放在一起,作为一个相互依存的整体,即对象。
面向过程:是一种以事件为中心的开发方法。
两者的不同之处:
1)出发点不同:
2)层次逻辑关系不同:
3)数据处理方式与控制程序不同:
4)分析设计与编码转换方式不同:
面向对象的主要特征:
1)抽象:
2)继承:
3)封装:指将客观事物抽象成类,每个类对自身的数据和方法实行保护。
4)多态:指允许不同类的对象对同一消息作出响应。
继承:extends
1)Java 语言不支持多重继承
2)子类只能继承父类的非私有(public、protected)成员变量和方法
3)当子类中定义的成员变量和方法函数名称和父类的同名时,子类不会继承,而是覆盖
多态:
主要2种表现方式:
1)方法的重载(overload)
2)方法的覆盖(override)
抽象类和接口
接口可以看做是抽象类的变体
二者的相同点:
1)都不能被实例化
2)接口的实现类或者抽象类的子类都只有实现了接口或抽象类的方法后才能被实例化
二者的不同点:
1)接口只有定义,其方法不能在接口中实现,只有实现接口类的类才能实现接口类中定义的方法
而抽象类可以有定义和实现,即其方法可以在抽象类中被实现
2)接口需要实现implement 抽象类之能被继承extends
一个类可以实现多个接口,但一个类只能继承一个抽象类
因此,使用接口可以间接的达到多重继承的目的
3)接口强调特定功能的实现,其设计理念是"has - a"关系
抽象类强调所属关系,其设计理念为"is - a"关系
4)接口中定义的成员变量默认 public static final ,只能够有静态的不能被修改的数据成员,且必须给其赋初值 其所有成员方法都是public、abstract,而且只能被这两个关键字修饰
抽象类可以有自己的成员变量,也可以有非抽象的成员方法,成员变量默认default 也可以定义为 private protected public 可以在子类中被重新定义和赋值,方法被abstract修饰,不能被private static synchronized native 等访问修饰符修饰,同时方法必须以分号结尾,并且不带花括号。
5)接口被运用于实现比较常用的功能,便于日后维护或者添加删除方法
抽象类更倾向于充当公共类的角色,不适用于日后重新对其修改
此外,接口类可以继承接口,抽象类可以实现接口,抽象类可以继承具体类,抽象类可有静态的main方法
接口是常量值和方法定义的集合。接口是一种特殊的抽象类。
java类是单继承的。classB Extends classA
java接口可以多继承。Interface3 Extends Interface0, Interface1, interface……
不允许类多重继承的主要原因是,如果A同时继承B和C,而b和c同时有一个D方法,A如何决定该继承那一个呢?
但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。[1]
参考资料:
[1] java接口可以继承多个接口 http://javaeedevelop.iteye.com/blog/1513135