Java面向对象-4.继承、this、super

extends继承:

  1. 提高了代码的复用性
  2. 提高了代码的维护性
  3. 让类与类产生了关系,是多态的前提
  4. 弊端:类的耦合性增强了

开发的原则:高内聚(自己能做的自己做),低耦合

java中类的继承特点:

  1. 只支持单继承,不支持多继承(一个儿子只能有一个爹)
  2. 支持多层继承(父、子、孙)
  3. 如果想用这个体系的所有功能用最底层的类创建对象
  4. 如果想看这个体系的共性功能,看最顶层的类

继承注意事项:

  1. 子类只能继承父类所有非私有的成员变量和方法
  2. 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法
  3. 不要为了部分功能而去继承

继承中成员变量的关系:

  1. 若父类与子类有相同的成员变量,则子类对象调用时就调用子类的成员变量(就近原则)
  2. 若父类与子类有相同的成员变量,则在成员变量前加上super就可以在子类对象调用时就调用父类的成员变量
  3. 若父类与子类有相同的成员变量,则在成员变量前加上this就可以在子类对象调用时就调用子类的成员变量

this和super的区别:

  1. this可以访问自己的成员变量,若本类没有这个成员变量,也可以访问父类的成员变量
  2. super只能访问父类的成员变量

在每一个类中构造方法里面都会有一个默认的super()方法,子类调用构造方法时都会先调用父类的构造方法

子类中所有构造方法都会默认访问父类的空参的构造方法,若自己给出super(参数);则会访问父类有参的构造方法,当父类成员变量私有时,可以通过super(参数);通过有参构造方法向父类有参构造方法传递参数;也可以通过子类无参构造方法定义super(变量赋值的名字);向父类有参构造方法传递值;也可以通过子类无参构造方法定义this(变量赋值的名字);先向子类有参构造方法中再定义super(参数);传值(this可以调用本类其他构造方法),再向父类有参构造方法传递值。

注:构造函数中有super和this不能共存,this和super必须放在构造函数的第一行,子类必须会访问父类的构造方法。

class Fu {
    static {
        System.out.println("静态代码块Fu");
    }
    {
        System .out.println("构造代码块Fu");
    }
    public Fu() {
        System.out.println("构造方法Fu");
    }
}
class Zi extends Fu {
    static {
        System.out.println("静态代码块Zi");
    }
    {
        System.out.pringtln("构造代码块Zi");
    }
    public Zi() {
        System.out.println("构造方法Zi");
    }
}
class Extends1 {
    public static void main(String[] args) {
        Zi z = new Zi();
        /*
        1.Extends1加载进内存
        2.主方法进栈
        3.需要执行Zi z = new Zi();这句话,但是在内存还没有加载Zi.class
        4.Zi继承了Fu,所以Fu.class先加载进内存,同时父类的静态代码块也加载进内存
        5.Zi.class加载进内存,同时子类的静态代码块也加载进内存
        6.执行子类的构造方法,子类构造方法中隐藏着super(),super()会访问父类的构造方法
        7.在父类构造方法执行之前,会先看是否有构造代码块,有先执行构造代码块
        8.执行父类构造方法
        9.执行子类构造方法,在执行前会看是否有构造代码块,有就先执行
        10.执行子类构造方法
        */
    }
}

//运行结果
静态代码块Fu
静态代码块Zi
构造代码块Fu
构造方法Fu
构造代码块Zi
构造方法Zi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值