博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
封装、继承、多态
阅读量:4634 次
发布时间:2019-06-09

本文共 1811 字,大约阅读时间需要 6 分钟。

得益于一个面试官的问题,当时是这么问我怎么理解javascript的prototype的原型概念

当时似乎也不知道自己讲了些什么

总之,在学习开发的过程我确实很少去想过怎么和别人解释这些概念,我自己总有自己特殊的一套记忆曲线。

 

想想做开发的过程中总难免与人有些交流,所以还是从现在开始自己整理一下一些概念的自我理解好了,

并不拘泥于专业书籍里面的解释,主要是自己理解的一个方法。

 

1、封装

从字面上的意思,我理解为封闭起来,然后组装好。ok,用一个比较普通的比喻吧,就好像我们组装台式机的时候。

我们把cpu、内存条神马的各种都插好、装好之后,把整个主机用一个铁片或者外壳给装起来了,这个时候我们基本

上只留下 开启、重启这两个按钮对外开放了。

用类的方式来理解的话,即private属性我们外部无法访问,但我们可以通过public的方法来操作private的属性。

用段代码来解释吧

public class Test {    // 私有属性,外部无法直接访问 ->封    private String name;    // 开放2个public方法才间接操作私有属性 ->装    public String getName() {        return this.name;    }    public void setNmae(String name) {        this.name = name;    }}

 

2、继承

对于继承这个词,大家可能更多地想到的是财产继承神马的,再加上大家身边的人大都是一个种族、一个民族的人,可能大家并不是感觉到很明显。

同样的举个现实的例子:

你见过2个中国人生出过一个黑人或者白人吗?就是说我们的肤色是继承于父辈的,老爸老妈的。当然混血的比较特殊了,或者养过猫猫狗狗的可能也知道,

纯血的毛色比较单一,通常情况下 杂毛==杂种,当然这个比喻不太好。

用代码来理解的话,大概就是这样的:

class Father {    // 父类[基类] 肤色是黄色的    protected String skinColor = "yellow";}public class PeopleOne extends Father {    // 继承的默认情况下,子类的肤色也是黄色的,但是如果特殊情况    // 比如母亲是白人的情况下,也有可能变成白色    private String skinColor = "white";}

 

3、多态

前面也说过了继承,理想状态下,儿子会完全继承父亲的特征。可能与真实情况相反的是,在现实中我们是父母生下的,

而不是像java那种子的单线程 -> 单性繁殖。

因此在这个基础上,或者再加行一些基因突变以及先后天的影响,我们并不完全跟父亲或者母亲相同。人类世界才会多姿多彩。

这就是我们所说的多态,也就是说多态的前提是继承,可是完全继承不是太没有意思了吗?用现实的现象来理解的话,就是相

同爸妈所生的孩子也几乎完全不同(双胞胎神马的除外)。

用代码来理解的话就有 重载重写:

 

class SuperClass {    public void doSomething() {        System.out.println("I can swap.");    }}public class OverLoadOrWrite extends SuperClass{    // 方法名一致,参数类型不同 -> 重载    public static int getAge(String age) {        return Integer.parseInt(age);    }    public static int getAge(double age) {        return (int)age;    }    // 重写父类方法    public void doSomething() {        System.out.println("I can walk.");    }}

 

值得注意的是重载通常是类自身方法之间的关系,而重写涉及到类与类之间的关系。前者是运行时绑定,后者是编译时绑定。

 

转载于:https://www.cnblogs.com/gabin/p/3990197.html

你可能感兴趣的文章
软件行业项目经理主要的职责是什么?(转)
查看>>
git笔记
查看>>
Java 内部类
查看>>
maven nexus 3 third party 构件上传
查看>>
wchar用wcout输出正常cout是?
查看>>
生成svg元素函数
查看>>
学习Modern UI for WPF
查看>>
lua单链表实现
查看>>
MySql按日期进行统计(前一天、本周、某一天)[转载]
查看>>
经常用得到的安卓数据库基类
查看>>
大智慧面试经验
查看>>
比特币脚本及交易分析 - 智能合约雏形
查看>>
kafka消息会不会丢失
查看>>
codeforces-1132 (div2)
查看>>
简单入门dos程序
查看>>
linux下occi操作oracle数据库,中文乱码的问题
查看>>
JS原型与原型链
查看>>
SVG.js 笔记 (一)
查看>>
struts2笔记01-环境搭建
查看>>
appium 控件定位
查看>>