大家都知道Java是面向对象的编程语言,掌握面向对象的思想是掌握java这门编程语言的关键所在,下面就来谈谈我对于这个概念的理解。
- 面向对象是相对面向过程而言
- 面向对象和面向过程都是一种思想
类(class):
现实世界的抽象,或者说是对现实生活中事物的一种描述(属性和方法)
对象:
这类事物,实实在在存在的个体,也叫类的实例。对象与类的关系可以理解为:对象 is a 类,例如:dog is an animal,我们就说dog是animal的一个实例。对象使用 new
关键字创建。
封装 | 继承 | 多态
讲到面向对象,就不得不讲它的三个主要特征:封装、继承、多态。
-
封装:
面向对象最基础的一个特性,封装性,是指隐藏对象的属性和现实细节,仅对外提供公共访问方式,是根据需要,把属性和方法捆绑在一起,就像一个保护器,防止外界代码随意的访问,而是根据该保护器定义的接口来控制。该机制保证了程序和数据都不受外部干扰且不被误用。封装代码的好处是每个人都知道怎么访问它,但却不必考虑它的内部实现细节,也不必担心使用不当会带来负面影响,在提高了安全性的基础上更加便于使用。
封装的原则:将不需要对外提供的内容都隐藏(设置访问修饰符为“private”)起来。把属性都隐藏,仅提供公共方法对其访问,可以在访问方式中加入逻辑判断等语句。继承给我们的编程带来的好处就是对原有类的复用,就像模块的复用一样,类的复用可以提高我们的开发效率。
-
继承:
继承是指一个对象从另一个对象中获得属性和方法的过程。子类会继承父类的属性和行为,并且也可包含它们自己的,所以子类比父类要更加具体化。
例如:有一个Animal类,有一个属性重量(weight),有一个Dog类继承自Animal类,那么Dog也会有weight这个属性,方法同理,但是值得一说的是:当子类调用一个方法时,它会先从本类里去寻找这个方法,如果本类里有这个方法,就会直接调用这个方法,否则再去调用父类的方法,这就叫方法的重写(override),需要特别说明的是两个方法的头部必须是完全一样的,包括返回值、方法名和参数,还有一种是方法的复载(overload),这是指在同一个类中有两个同名的方法,但是它们有不同的参数(可以是参数的个数不同,也可以是参数的类型不同)。
-
多态:
多态是在继承的基础上,实现的。
多态实现的三个必要条件:
1. 继承
1. 方法的重写
1. 父类引用指向子类对象; 例如:Animal an = new Dog();
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
网友评论