面向对象三大特性
来源:互联网 发布:淘宝美术设计招聘 编辑:程序博客网 时间:2024/05/28 15:13
面向对象三大特性,读起来朗朗上口:封装、继承和多态,在不同的学习阶段,理解程度是循序渐进的。好像每一个阶段都会强调面向对象的特性,现在接触java的时候,同样告诉我们面向对象。面向对象真的这么重要吗?
【面向对象】
面向对象符合人类思考问题的习惯,成为指挥者,要想完成一件事情直接找一个对象去做,而不是自己辛辛苦苦成为执行者一步一步去做,能将问题简单化,可见面向对象的确不一般。那么我们就通俗的理解一下面向对象的三大特性吧。
【封装】
封装:将对象的方法和属性的实现细节进行隐藏,仅对外提供一些公用的访问方式。
我们常见的封装也就是方法和类了,某个类可以是具体实现一个功能,我们应用的时候只要知道这个类是干什么的就好了,而不是需要了解这个类具体是封装了哪些东西,类中的方法也可以进行一个个的归类,一个方法一个功能,调用的时候直接调用方法就可以了,而不用了解方法的具体实现过程,这就是封装,可以将问题实现的细节进行隐藏,方便用户的使用。除了类、方法以外,包也是很高的封装体。
【继承】
继承:子类自动继承父类非私有的成员变量和成员方法。
java只支持单继承,不支持多继承,但是接口的多实现弥补了这个不足,它是支持多重继承的,即可以传递着继承,有一点需要我们注意继承了父类,子类可以对父类的方法进行重写,重写的修饰符必须是大于等于父类的修饰符的。
出final修饰的类都是能够被继承的,我们知道抽象类可以被继承,一般类可以被继承,那么有没有想过抽象的类可以继承一般的类吗?答案是可以的。
【多态】
多态:父类的引用指向子类对象,配合继承和实现使用,重点是离不开重写,如果没有方法重写,多态也就毫无意义。
多态的出现也是大大提高了代码的复用性,多态的前提是继承和接口的实现,方法的重写。多添分为三种形式:一般类和类之间的继承;抽象类和一般类之间的继承;还有实现类和接口之间的实现,这都是可以用父类引用指向子类对象完成的,多态可以说是向上转型,那么既然有向上转型,那么向下转型也是少不了的,其实向下转型属于强制转换了,同我们之前学习的数据类型的强制转换,可以结合instanceof来判断使用。
【代码实现-综合三大特性】
//抽象的Animal类,两个方法,一个共有的,一个抽象的public abstract class Animal {public void drink(){System.out.println("动物都需要喝水");}public abstract void eat();}//Cat继承Animal,重写方法,并且添加自己特有catchMouse方法public class Cat extends Animal{ public void eat(){ System.out.println("猫咪喜欢吃鱼"); } public void catchMouse(){ System.out.println("猫特有的功能是会抓老鼠"); }}//Dog类public class Dog extends Animal{ public void eat(){ System.out.println("狗喜欢啃骨头"); } public void keepHome(){ System.out.println("狗特有的功能是能保护家"); }}//测试类public class Test01 { public static void main(String[] args) { //多态实现共有方法调用,但是不能调用各自特有的方法 Animal c=new Cat(); c.drink(); c.eat(); Animal d=new Dog(); d.drink(); d.eat(); //向下转型调用特有方法 if(c instanceof Cat){ Cat c1=(Cat)c; c1.catchMouse(); } }}
【小结】
知识就是在不断回顾,不断加深的,刚开始的时候不太懂没有关系,慢慢的积累,慢慢的总结,总有一天会明白的。现在这种学习习惯一直贯穿着我的学习,而且很多问题想了还不够,更需要动手去做一下,切不可眼高手低,始终坚信:实践出真知,坚持学习,面向对象将会一直陪伴我们,希望我们将面向对象思想贯穿到底。
- 面向对象三大特性
- 面向对象-三大特性
- 面向对象三大特性
- 面向对象三大特性
- 面向对象三大特性
- 面向对象三大特性
- 面向对象三大特性
- 面向对象三大特性
- 面向对象三大特性
- 面向对象三大特性
- 面向对象三大特性
- 面向对象的三大特性
- 面向对象的三大特性
- 详解面向对象的三大特性
- 面向对象三大特性分析
- 面向对象三大特性之多态
- 面向对象的三大特性
- 面向对象的三大特性
- 新闻发布项目——接口类(BaseDao)
- PAT 1011
- 蓝桥杯_C语言_本科B——六角填数
- VideoView 组件播放视频
- thinkphp截取文字部分字符串
- 面向对象三大特性
- 新闻发布项目——数据实现类(commentDaoImpl)
- Android 从0开始自定义控件之 View 的弹性滑动(三)
- 【OpenCV入门指南】第九篇 灰度直方图均衡化
- RTP协议全解(H264码流和PS流)
- 自建网页项目-蚁族财富网-记录13
- httpurlconnection使用post传值时web接口接收不到值
- EventBus
- 【OpenCV入门指南】第十一篇 鼠标绘图