• java篇 之 继承


    this代表正在使用类的对象(的引用)

    java支持重载:允许在同一个类中使用相同的方法名(重载类型只区分参数列表,包括参数 顺序,参数个数,参数数据类型,与方法返回类型无关)

    匹配:

    1. 方法名
    2. 参数列表类型
    3. 调用

    如果参数列表不匹配,系统如果能自动隐式转换为方法中对应的数据类型,则调用该方 法,只能唯一匹配

    构造器:

    1. this的调用必须是第一个语句!(用this能调用同类的其它构造器,包括自己! (避免调用本身造成循环))
    1. 可以重载
    2. 只有newthissuper才可以调用构造器,不可以(对象.调用)
    3. super的前提是自己这个类没有写相应的方法才去调用父类的,用this的前提是 自己这个类写了相应的方法(setX9(),setY()......
    4. 一旦写了构造器,系统不会在默认生成构造器(无参的)
    5. 一旦new了就会把它的方法加载好(加载到栈中),可以调用了
    6. String为引用类型
    7. 没有初始化,构造器没有赋值,jvm会给属性赋默认值(各种0

    继承:是一种代码复用的技术,java中只支持单继承,不支持多继承

      继承还是要少用,付出的代价是空间(不因两个代码相同就用)!

      Extends +类名(要继承的)

    重写:

    子类继承了父类一个方法(此时两者指向同一个方法体),并且重新添加了一点内容, (修改该方法)这时候java系统会自动给这个方法开辟空间,把他的地址给子类, 相当于屏蔽了父类的该方法(此时两者的方法没有关系了,但是super可以调用父 类的该方法)

    super调用当前类的父类中的方法(语句必须放第一行与this一样)(它是给子类对 象赋初值)

    Java系统检测到相同的方法,会单独开辟一个新空间,存放当前类中这个方法

    Person  父类 / 超类 /基类  / 一般类

    Lawyer 子类 /子类  /派生类 /特殊类

    Lawyer 继承 person

    泛华:

    Person Lawyer 的泛华

    派生:

    Person 派生出 Lawyer

    LawyerPerson的一个派生类

    拓展:

    Lawyer person 的一个拓展

    去拓展person.......Lawyer

    (Father)继承树,(Father)继承层次,(Father)类域

    子类继承下来的private变量不可直接访问,只能间接访问(用继承的方法访问,这样效率太低,因为内部要开空间赋值...所以直接访问很有必要)

    Protected:为继承而生,开了一个小口,它可以被子类直接访问,不可被外界直接访问

    构造器书写习惯:不缺省的构造器写上super,缺省的写this调用自己其它的构造器,再由 其它构造器调用父类的(提高代码复用)(调用顺序先父后子)

    对于子类的无参构造器,它默认调用super();就是调用父类的无参构造器,该无参构造器又能调用同类的其它构造器赋值

    子类的构造方法必须调用父类的构造方法!如果子类不明写super(),会隐式调用父类无参构造器,或者如果父类只有一个有参构造方法,子类就必须写明调用父类的有参构造方法(否则编译报错)!

    静态决定编译是否通过,动态决定调用谁!!!!

    public class A{

    public void sayHello(){

    System.out.println("hello A");

    }

    public A(){ //静态决定编译是否通过,动态决定调用谁!!!!

    this.sayHello();

    }

    }

    public class B extends A{

    public void sayHello(){

    System.out.println("hello B");

    }

    public static void main(String[] args){

    new B();

    }

    }

    编译运行后的结果是什么?

    hello B

    New B()调用B的无参构造器,该构造器默认调用父类无参构造器,且this动态指向B

  • 相关阅读:
    Session
    python内存优化机制中的小秘密
    跨域请求
    Cookie
    json
    Python深浅拷贝辨析
    Django form组件相关
    Python 中的 if __name__ == '__main__'
    online_judge_1108
    online_judge_1107
  • 原文地址:https://www.cnblogs.com/wskb/p/10811157.html
Copyright © 2020-2023  润新知