面向对象基本特征

Posted xingrui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象基本特征相关的知识,希望对你有一定的参考价值。

封装

1、把对象的属性、行为封装起来,其载体是类。
    属性封装:private 私有化
    行为封装:方法,封装的是一个独立的功能,一段代码。
    对于调用者来说,隐藏了实现细节;暴露一些方法的签名供开发者调用。
2、广义的封装
    组件封装:对方给你开放了接口,你按照它规定的格式,把数据传给它,它计算完,并把结果返回。
    例如:第三方组件、支付宝、网银支付。。。。
  系统封装:对使用者来说,不知道实现细节,但是知道怎么用。

标准的javaBean
    (1)属性私有化
    (2)提供get/set方法
    (3)保留无参构造

继承(延续:相同点、扩展:特有点)

为什么有继承?

1、为了代码复用和功能扩展

如何实现继承?

 [修饰符] 子类名 extends 父类名{}  

继承的特点?

    1、java只支持单继承。
    2、java支持多层继承。
    3、父类可以有多个子类。
    4、子类会继承父类所有的属性和方法,但是如果修饰符为private,虽然继承过来了,但是不可见。
    5、子类不会继承父类的构造器。
    6、子类的构造器一定会调用父类的构造器。并且默认调用父类的无参构造器。当父类没有无参构造器时,需要在子类中,手动调用父类的构造器:super(实参列表);

    为什么调用父类的构造器??

重写(override)

    定义:在子类中重写继承自父类的方法,方法名和参数列表相同,方法实现不同
  • 特点
    • 方法名:完全相同
    • 形参列表:完全相同
    • 返回值类型
      • void或者基本数据类型时:完全相同
      • 引用数据类型时:返回父方法类型,或者父方法返回类型的子类。
    • 修饰符
      • 权限修饰符
        • 重写方法的修饰符 >= 被重写方法的修饰符
        • 注意:父类方法不能是private,子类中不可见
      • 其他
    • 抛出的异常列表

多态

为了代码更灵活
实现多态的前提是继承。
多态:就是父类引用指向子类对象。(编译看左,运行看右)

解惑?

    1、Overload与Override的区别
    Overload:重载  load的英文意思是载入,装载
    Override:重写 

    Overload概念:表示在同一个类中,出现了方法名相同,形参列表不同的两个或多个方法,称为方法的重载。注意与返回值无关。
    Override:当子类继承父类时,会继承父类中的所有方法,但是父类的某个方法的实现不适用于子类,那么子类就重写该方法。
    重写要求:
        方法名:必须完全相同
        形参列表:必须完全相同
        返回值类型:1、如果是void、基本数据类型,则要求返回类型完全一样
        2、如果父类方法返回类型时引用类型,则子类方法返回类型<父类方法返回类型。

    2、java为何设计单继承?而不是多继承呢?接口为什么能多实现呢?
        ①从技术角度讲,降低复杂性。
        类A有一个m()方法,类B有一个m()方法,而类C继承A,B;此时会发生问题,就是不确定继承哪一个m()方法。至于接口为啥是多实现呢?难道接口中的变量(属性都是 static final修饰的,即常量)可以区分?在编译器,常量值不同时不能通过编译。所以属性肯定一样的。至于方法,接口中的方法都是抽象方法,需要实现该接口的类去实现方法,最终调用的是子类的方法;而继承则不一样,父类的方法也是可以调用的,例如super.m(),你就不能确定调用A?还是B类中的方法了。

以上是关于面向对象基本特征的主要内容,如果未能解决你的问题,请参考以下文章

C# 面向对象之3个基本特征

面向对象编程的四大基本特征

C++之面向对象的三个基本特征

面向对象的三大基本特征之一封装

面向对象的三大基本特征,五大基本原则

PHP-面向对象的三大基本特征和五大基本原则的概念