zoukankan      html  css  js  c++  java
  • 继承


    extends继承
    1.Java继承的关键字是: extends
    2.public class子类名extends父类名{..}
    3.Java中类的继承只能是单继承(单根继承) ,即一个类只能继承-个父类,但是一个类可以由多个类来继承
    它。
    4.super关键字来访问父类的成员
    5.super只能出现在子类的方法和构造方法中
    6.super调用构造方法时,只能是第一-句
    7.super不能访问父类的private成员
    重写
    1.方法名、参数、返回值相同
    2.存在于父类和子类之间
    3.子类方法不能缩小父类方法的访问权限
    方法的重写:
    1、在子类中可以根据需要对从基类中继承来的方法进行重写。
    2、重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。(注:返回值可以为父类中返回值的子类型.参数若为子类,则不是重写是重载)
    3、重写方法不能使用比被重写的方法更严格的访问权限。
    4. 重写方法不能声明抛出比被重写方法范围更大的异常类型。
    this(...) 调用本类的构造方法
    super(...) 调用父类的构造方法
    super(…)或者this(….)必须出现在构造方法的第一条语句上

    继承的特性:
    1.提高了代码的重用性,子类继承父类所有的方法和属性,所以子类不用再重复定义
    2.提高了代码的可扩展性,子类可以写自己独特的属性和方法,在父类的基础上进行扩展

    继承的用法:
    1.子类继承父类所有属性和方法,只不过只能调用父类的非private属性和方法
    2.Java中的继承只支持单继承,意思是一个子类只能继承一个父类,但允许多层继承

    父类的构造函数是不能够被继承,但可以被子类默认调用

    不能够被子类继承的3种形式:
    1.父类用私有属性进行修饰不可被继承
    2.子类与父类不在同包(属性默认修饰public),使用默认访问权限的成员不可被继承
    3.父类的构造函数不可被继承,而是默认进行调用

    super关键字
    1.super()指的是父类的构造函数的对象
    2.调用父类中构造函数,一定发生了继承
    3.调用父类里面的构造函数,那么你的super一定在你的子类的构造函数中并且在第一句

    this和super的区别
    1.在同一个上下文里,this 和 super 都是同一个对象的引用,也就是说指向同一个地址,
    区别在于,this 的类型是子类,而 super 的类型是父类。
    2.在访问父类非 private 成员的时候,获取到的值都是一样的,因为访问的都是内存里的同一个位置。
    3.而当在访问父类非 private 的方法(被子类覆盖的方法)的时候,this 会访问子类的方法,而 super 会访问父类的方法
    子类的构造函数如果要引用super的话,必须把super放在函数的首位
    4.this:代表当前对象名,this一般来指当前对象,如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名
    5.super:指引用当前对象的直接父类中的成员

    重写和重载区别
    方法的重写:一定发生了继承,方法的方法名,返回值类型,参数都要和父类一模一样
    方法的重载:构造函数没有返回值,且他的方法名和类型要一致,参数不同(参数的个数和参数的类型)
    ①重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。
    ②覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。
    重写(覆盖)是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系
    重写(覆盖)只能由一个方法或只能由一对方法产生关系;重载是多个方法之间的关系
    重写(覆盖)要求参数列表相同;重载要求参数列表不同。

  • 相关阅读:
    Windows 右键添加用记事本打开的选项
    shell 脚本常用写法
    常用命令--dig
    电子表格数字式的小时化成时分秒格式
    Kaggle猫狗图像分类竞赛Baseline
    阿里巴巴用户体验研究专员暑期实习生笔试 经验分享 2019
    sysctl -w net.core.somaxconn=65535
    src/stream/ngx_stream_proxy_module.c:542: 错误:‘ngx_stream_upstream_t’没有名为‘ssl_name’的成员
    ssl.cpp:333: error: ‘SSL_set_tlsext_host_name’ was not declared in this scope
    fiddler QuickExec
  • 原文地址:https://www.cnblogs.com/lei1121/p/11714514.html
Copyright © 2011-2022 走看看