码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象基本特征

时间:2018-10-15 20:26:17      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:形参   override   类方法   必须   组件   相同   代码复用   private   默认   

封装

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类中的方法了。

面向对象基本特征

标签:形参   override   类方法   必须   组件   相同   代码复用   private   默认   

原文地址:https://www.cnblogs.com/xingrui/p/9792768.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!