封装、继承、多态(动态绑定/后期绑定/运行时绑定)、对象、类、抽象

本文围绕面向对象编程展开,介绍了封装、继承、多态等核心概念。封装隐藏对象属性和方法细节,通过接口访问;继承可共享公共特性,提高软件重用性;多态允许不同类对象对同一消息响应。还阐述了对象、类、抽象和消息的定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、封装

封装是将对象的属性和方法细节隐藏起来,只对外提供某些接口。封装的主体是类,封装对类提供保护,使类的属性和方法在外部不能随意访问,只能通过类对外提供的接口访问。类是封装的最基本单位。封装防止了程序相互依赖而带来的变动影响。

封装通过合并特征和行为来创建新的数据类型。

个人认为,边数,画画功能,删除功能,shape类这些定义都是数据抽象;把他们组装到一起,然后有些是private私有的属性,有些是public公有的接口(方法),则是封装,让你知道该知道的,不该知道的你也没办法调用到。

/**
 * @Description 图形 封装
 * @Author rll
 * @Date 2021-01-13 8:34
 */
public class Shape {
    //边
    private int side = 0;

    public Shape() {
    }

    public Shape(int side) {
        setSide(side);
    }

    //周长
    public int getPerimeterInt() {
        return 0;
    }
    //周长
    public double getPerimeterDouble() {
        return 0;
    }

    public int getSide() {
        return side;
    }

    public void setSide(int side) {
        this.side = side;
    }

    public void draw() {
        System.out.println("shape draw");
    }

    public void delete() {
        System.out.println("shape delete");
    }
}

二、继承

多个类存在相同属性和方法时,将这些相同内容抽取到单独一个类中,那么这多个类就不用再定义这些相同属性和方法,只要继承单独的那个类即可。子类继承父类(超类)。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。

继承允许将对象视为它自己本身的类型或其基类型(向上转型)来加以处理,而同一份代码也就可以毫无差别的运行在这些不同类型之上了。比如Circle类继承Shape类,继承了public方法(protected的也可以)。

/**
 * @Description 圆形 继承
 * @Author rll
 * @Date 2021-01-13 8:38
 */
public class Circle extends Shape {
    private double pi = Math.PI;

    public Circle() {
    }

    public Circle(int side) {
        setSide(side);
    }

    //周长 side当半径
    public double getPerimeterDouble() {
        return 2 * pi * getSide();
    }

    @Override
    public void draw() {
        System.out.println("circle draw");
    }

    @Override
    public void delete() {
        super.delete();
    }
}
/**
 * @Description 三角形 继承
 * @Author rll
 * @Date 2021-01-21 8:35
 */
public class Triangle extends Shape {

    public Triangle() {
    }

    public Triangle(int side) {
        setSide(side);
    }

    //周长  整型数据
    public int getPerimeterInt() {
        //假设等边三角形
        return this.getSide() * 3;
    }

    @Override
    public void draw() {
        System.out.println("triangle draw");
    }

    @Override
    public void delete() {
        super.delete();
    }
}

三、多态

多态是指允许不同类的对象对同一消息做出响应。

多态通过分离做什么和怎么做,从另一个角度将接口和实现分离开,消除类型之间的耦合关系。
多态方法调用允许一种类型表现出与其他相似类型之间的区别,只要他们都是从同一基类导出而来的,这种区别是根据方法行为的不同而表示出来的。
多态是一项让程序员“将改变的事物与未变的事物分离开来”的重要技术。只有普通的方法调用可以是多态的。任何域(属性/字段)访问操作将由编译器解析,因此不是多态的。

/**
 * @Description 多态
 * @Author rll
 * @Date 2021-01-13 8:48
 */
public class DrawPic {
    public static void main(String[] args) {
        Shape circle = new Circle(1); //向上转型 半径1
        circle.draw();//虽然声明的是shape大类,但是执行的draw方法是circle的
        System.out.println(circle.getPerimeterDouble());

        Shape triangle = new Triangle(3); //向上转型 边长3
        triangle.draw();//虽然声明的是shape大类,但是执行的draw方法是triangle的
        System.out.println(triangle.getPerimeterInt());

    }
}

四、对象

对象是指客观世界中的任何实体,可以指具体的事物,也可以指抽象的概念。比如,一个人,一条狗,一个计划等。对象的内部状态叫属性,运动规律叫方法或操作。

五、类

类是具有相似内部状态和运动规律的实体的集合。类是具有共同属性和方法的对象的抽象。一个属于某类的对象称为该类的一个实例

六、抽象

抽象是从具体的实例中抽取共同的性质形成一般的概念。比如,人都有性别,年龄,名字,身高,体重,血型,生日等等,这些可以作为Human这个类下面包含这些属性。

七、消息

消息是指对象间相互联系和相互作用的方式,类似于方法函数调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值