question1.java的四个基本属性
2018-04-08 本文已影响0人
莫冰先生
导读: 关于封装、继承、多态、抽象这四个东东我觉得不论大小公司都会问,所以我觉得还是有必要背一背给面试官听得呢=-=(任何的理解都是基于脑神经的存储),ok ,大家跟我一起背!
介绍下Java面向对象的四个属性
- 抽象: 抽象就是将一类对象公共特征总结出来构造类的过程,包括数据抽象和方法抽象,抽象只关注对象有哪些属性和方法,而不关注这些行为的细节是什么(比如抽象类和接口在工程中抽象类更像是打造一个模板,里面有一些确定实现的非抽象方法,还有一些没有实现的方法由实现它的类来具体实现,这样不会像继承一样全盘否定以前所做,这样也就是增加了扩展性也就是抽象模板)
- 封装:通常认为封装就是把数据和操作数据的方法绑定起来,堆数据的访问只能通过已经定义的接口。面向对象的本质就是将显示世界描述为对数据和数据操作的封装,然后通过简单的编程接口来访问和操作数据
- 继承:继承是从已有类得到继承信息创建类的过程。提供继承信息的称父类,得到继承信息的称为子类。继承使变化中的软件系统有了一定延续性,但是我觉得继承太多会导致系统的不稳定,因为过多的继承,当父类发生变化,那么产生需要维护的信息太多,而使用接口组合的方式来操作更好,这样把需要做的操作给别的做 做好了调用这个接口即可
-
多态:
1.一个类内的方法重载,就是实现的编译时的多态(前绑定)
2.子父类的方法重写,就是实现的运行时的多态(后绑定),运行时多态时面向对象中比较精髓的东东(子类继承父类病重写父类已有的或者抽象的方法然后用父类型引用子类的对象,这样同样的引用调用同样的方法会根据子类方法的不同表现出不同的行为 father a=new son(1.2.3.4.5))这也就是上面说的组合加接口 接口作为父类 子类提供具体实现 然后就是在不同的子类中做不同的操作 这也就是可扩展性,而且他还可以重用代码而且也不会像继承那样耦合大
面试官觉得你在背会问(实际应用场景说一下)
举例子给面试官,让面试官知道你的脑子里有这个关系图,比如说在物流管理系统中,由两种用户:买家、卖家,两个客户都可以登录系统,他们两个对象具有相同的方法login,但登录后他们会进入到不同的页面,也就是登录的时候会有不同的操作,两种客户都继承父类的login方法,但是对于不同的对象,拥有不同的操作(就是抽象模板,将大家一定都有的东东写好了,不确定的东西由实现类再搞,比如这个login,而接口就麻烦了,接口站的高度就更高了,他是一种更高的抽象。。。)