新入行小白了解谈java面向对象的三大属性有些疑惑,还望各路大神指教教导一下

面向对象的三大基本特征,众所周知是:封装,继承,多态。
1.封装:把同一类事物的共性(包括属性和方法)归到同一类中,方便使用,也隐藏了信息,只需根据留在外部的接口(对象名和参数)进行操作,1)具体是通过getter,setter方法
2.继承:是从已有的类中派生子类,有着父类的属性和行为,一般只支持单继承,是可传递的,继承了属性方法,也有自己新定义的属性方法。具体是extends,implents
3.多态:这就是最有些疑惑的了,2)有很多人说继承是多态的前提,也有人说封装和继承都是多态的前提。甚至还有人说是继承的一种表现方式,但多态本身的话我也看到了很多,如编译期与运行期状态不同,同一个事务对象在不同时候的状态,也有允许不同类型的子对象对统一消息做出不同回应?不过,在多态这方面我目前能确定的是重写和重载构成多态,是体现多态的两种方法,即不同返回值,不同的参数个数就是多态(,也就是说方法的重写,重载与动态连接构成这多态性?可能也有理解有误,请多指教)。
1)2)感觉也有些问题

蓝山帝景
浏览 406回答 4
4回答

Cats萌萌

1。为什么要封装1)比较肤浅的可以理解为我要隐藏类中的属性值 (设置为private )为了避免其他所有地方 都可以随意更改这个类的值 或者设置某些会出现问题的值 2)换成 getter setter的优势是我可以统一管理这些出入口 ,比如setter可以添加判断条件 getter可以对返回结果进行处理(如需要加密 或 进行格式化运算)2. 继承可以有什么作用1)可以比较简单的抽象代码 比如 若干个类中 都有完全相同的方法 ,那么可以把这些方法提取出来做一个父类 (比如 很多动物的吃的方法都是一样的 那么在这个例子中 动物就可以做为一个父类)3.多态多态确实是我初学的时候理解最费劲的一个特性 还是上例中的动物, 如果我有个方法 可以接收动物这个类 那么 我可以给这个方法 传任何继承了动物类的所有对象 当作参数 比较抽象 写几个伪码帮你理解class Dog extends Animal{       xxxx } public static void test(Aninal animal){ } Dog d = new Dog(); test(d);    因为我是接收所有的animal当参数  而dog是特定的某一种  也是animal 所以是允许的 或者上面在声明Dog对象的时候 我也可以这样写 Animal d = new Dog(); 可以理解为  我声明了一个动物  ,具体来说就是狗 但是上面的例子中反过来 就是不行的  相信你应该可以理解。 类似的 上例中的  animal 可以声明成为接口  然后dog类中就必须实现animal中的所有方法4.建议 新入门的 多练习 在练习中收获。基础扎实之后 然后去看一些别人的代码,要弄懂。看看懂代码之后 再去尝试分析一样这样写代码的优劣。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java