基础知识--封装、继承、多态、抽象

一、封装

封装:是面向对象方法的重要原则,就是把对象的属性和行为(数据)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节,就是把不想告诉或者不该告诉别人的东西隐藏起来,把可以告诉别人的公开,别人只能用我提供的功能实现需求,而不知道是如何实现的。增加安全性

public class Person {
    private String name;
    private int gender;
    private int age;

    public String getName() {
        return name;
    }

    public String getGender() {
        return gender == 0 ? "man" : "woman";
    }

    public void work() {
        if (18 <= age && age <= 50) {
            System.out.println(name + " is working very hard!");
        } else {
            System.out.println(name + " can't work any more!");
        }
    }
}

以上 Person 类封装 name、gender、age 等属性,外界只能通过 get() 方法获取一个 Person 对象的 name 属性和 gender 属性,而无法获取 age 属性,但是 age 属性可以供 work() 方法使用。

注意到 gender 属性使用 int 数据类型进行存储,封装使得用户注意不到这种实现细节。并且在需要修改 gender 属性使用的数据类型时,也可以在不影响客户端代码的情况下进行。

二、继承

继承:是面向对象最显著的一个特性,继承是从已有的类中派生出新的类称为子类,子类继承父类的数据属性和行为,并能根据自己的需求扩展出新的行为,提高了代码的复用性。

Animal animal = new Cat();

继承应该遵循里氏替换原则,子类对象必须能够替换掉所有父类对象。

三、多态

多态:指允许不同的对象对同一消息做出相应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用)。封装和继承几乎都是为多态而准备的,在执行期间判断引用对象的实际类型,根据其实际的类型调用其相应的方法。

多态分为编译时多态和运行时多态。编译时多态主要指方法的重载,运行时多态指程序中定义的对象引用所指向的具体类型在运行期间才确定。

//父类
public class Base {
    protected void show() {}
}

//子类
class Kid: Base {
     public  void show() {
        System.out.println(" i am  kid");
    }
}
public static void main( String[] args )
    {
        Base base =  new Kid();
        base.show();
    }

四、抽象

抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。

例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是一个抽象的过程。

要抽象,就必须进行比较,没有比较就无法找到共同的部分。

共同特征是指那些能把一类事物与他类事物区分开来的特征,这些具有区分作用的特征又称本质特征。

因此抽取事物的共同特征就是抽取事物的本质特征,舍弃不同特征。

所以抽象的过程也是一个裁剪的过程,不同的、非本质性的特征全部裁剪掉了。

所谓的共同特征,是相对的,是指从某一个刻面看是共同的。

比如,对于汽车和大米,从买卖的角度看都是商品,都有价格,这是他们的共同的特征,而从其他方面来比较是,他们则是不同的。

所以在抽象时,同与不同,决定于从什么角度上来抽象。抽象的角度取决于分析问题的目的。

在软件开发过程中,识别稳定的需求、识别核心的需求、识别概念性的需求、设计系统的架构、定义系统中构件之间的接口关系等等都是抽象的过程,都是反应系统的本质特征的过程。

抽象的,才是稳定的,才是永恒的。 抽象的反义词是具体。人员往往会说:“你讲的太抽象了,能不能讲的具体一点?”

在开发语言中,有抽象类,有具体类,具体类可以继承自抽象类,可以实例化。抽象类可以派生出众多的不同的具体类。

所谓:“一生二,二生三,三生万物”。系统的稳定体现在抽象类,系统的变化体现在具体类。抽象类的层次要高于具体类。

系统因抽象而稳定,因抽象而生动。

抽象用 abstract 关键字来修饰,用 abstract 修饰类时,此类就不能被实例化,从这里可以看出,抽象类就是为了继承而存在的,

如果定义了一个抽象类而不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情,用 abstract 修饰方法时,此方法就是抽象方法,抽象方法必须存在于抽象类中,抽象方法没有方法体,

对于一个父类来说,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为抽象方法,抽象方法的修饰符必须为 public 或者 protected ,因为用 private,则不能被子类继承,子类便无法实现该方法,缺省情况下默认为 public 。

(0)

相关推荐

  • 继承的使用,方法重写(覆盖),super关键字

    认识继承 不同类型的对象,相互之间经常有一定数量的共同点.例如,小明同学.小红同学.小李同学,都共享学生的特性(班级.学号等).同时,每一个对象还定义了额外的特性使得他们与众不同.例如小明的数学比较好 ...

  • Java子类实例化总是默认调用父类的无参构造方法

    2020-09-06 21:15:12 3点赞 Lucius_Keep_Going! 码龄3年 关注 继承关系的细节 子类拥有父类的属性和方法,但是对于父类的私有属性(private修饰),子类是无权 ...

  • Java中的static关键字和new关键字作用介绍

    一.static关键字的作用 1.可以用于修改类的成员变量.代码块和类 通过static可以将类的成员声明为静态成员,静态的成员归属于整个类,而不是属于某个对象.无论通过类还是对象访问静态成员,操作的 ...

  • 面向对象(面向对象真的难吗,你只不过没有理清思路而已)

    面向对象真的难吗?其实我看不然,只不过我们学习的时候比较杂论,并且也没有真正领悟到他内部的强大.那么开始进入正题,众所周知面向对象三大概念:封装,继承,多态.封装中又可以实现构造方法,方法的重载.继承 ...

  • 无废话设计模式(12)行为型模式--模板方法模式

    0-前言 模板方法模式定义:定义一个操作中的算法骨架,而将一些步骤延迟到子类中: 模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些步骤: 1-实现 1-1.简单UML图:  1-2 ...

  • 封装+继承+多态

    面向对象三大特性 封装: Encapsulation是指一种将抽象性函式接口的实现细节部份包装.隐藏起来的方法.封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随意访问.要访问该类 ...

  • 安徽事业单位公共基础知识:关于继承的那点事

    在事业单位考试中,继承无疑是一块经常考察的要点,加之<民法典>修改更加重了这一部分的考察力度,中公教育小编今天就来为大家介绍一下这一部分在考试中如何考察. 一.总体概述 继承分为两大部分- ...

  • 事业单位公共基础知识之法律知识:民法典之继承

    事业单位考试中民法知识的考查总是备受青睐.说到民法中的继承大家肯定并不陌生,2021年正式生效的<民法典>对于继承的部分内容也做了调整.现行<民法典>规定的继承方式有两种:法定 ...

  • java程序员必备的基础知识_java面向对象之继承(一)

    在学习继承之前我们来来思考这样一个问题: 我想创建一个学生类,男学生类,女学生类,会有这么几个问题: 1.不管是男同学还是女学生,都是学生,学生公有的方法和属性本来就有很多. 2.虽然都是学生,但是男 ...

  • 易学应用基础知识之八:《奇门遁甲》中十二地支的相互关系

    这一部分内容,我们来介绍关于十二地支的相互关系. 关于十二地支之间的相互关系,在其它传统预测学中的应用是比较广泛的,比如八字.六爻等.在奇门遁甲中,十二地支之间的各种相互关系并不是所有的关系都能用得上 ...

  • 事业单位公共基础知识:人文常识之楚辞

    在各种考试中,一般都会涉及一些人文常识的题目,考查方式主要以识记性为主,但由于考察内容涉及的知识范围较广.例如一些文学著作知识,对于很多考生来说部分题目还是比较难.现就文学著作中的楚辞的部分知识梳理如 ...

  • 88张PPT带你学习PLC基础知识,不看你就亏了!

    电气达人 电气人择一业,终一生! 13篇原创内容 公众号 电气达人 电气人择一业,终一生! 13篇原创内容 公众号 电气达人 电气人择一业,终一生! 13篇原创内容 公众号 电气达人 电气人择一业,终 ...

  • 运维必知必备!73页计算机基础知识,新手小白也能轻松读懂

    基础不牢,地动山摇! 新手在学习运维亦或是开发的时候,都要注重基础知识的积累,不能只想着学习实战知识,这样到中后期,容易造成对"高级知识点"的一知半解,以至于知其然,却不知其所以然 ...

  • 干货 | 冷油器基础知识

    一,什么是冷油器?冷油器是电力系统中汽轮机配套使用的透平油冷却设备,冷油器为光管表面式,采用循环水作为介质实现热交换,从而保证轴承入口油温达到规定值,确保机组正常运行. 编辑搜图请点击输入图片描述(最 ...