第八谈:继承

一、继承

继承:java针对多个类中有相同的部分的话,可以将相同的部分提取出来,单独放到一个类中A,然后其他类与这个A类产生一个关系,这样的话,其他的类中就有了A类中的属性或行为。这个关系叫做继承,java提供了一个关键字extends来表示继承关系

继承的好处:
1.提高了代码的复用性:多个类相同的成员可以放到同一个类中。
2.提高了代码的维护性:如果功能的代码需要修改,修改一处即可。
3.让类与类之间产生了关系,是多态的前提:这也是继承的一个弊端(类的耦合性很强)。

注意事项:

1.子类无法继承父类中的构造方法。

2.java中的类与类之间的继承,不允许出现子类同时继承多个父类的情况,只允许单继承

3.Java中的类与类之间的继承,运行多重继承,形成继承体系。

4.java中子类无法继承父类中的私有成员。

5.不要为了部分功能而去继承。

二、this和super

继承与成员变量的关系:就近原则
用法:
访问成员变量:
this.成员变量       super.成员变量
访问构造方法(子父类的构造方法问题):
this(……)        super(……)
访问成员方法()
this.成员方法()     super.成员方法()

例子
class Fu2{
    int a = 10;

    public void show1(){
        int a = 40;
    }
}

class Zi2 extends Fu2{
    int a = 20;
    public void fun1(){ // 无法访问到父类中方法中的变量
        int a = 30;
        System.out.println(a); // 获取的是当前方法中的局部变量a:30
        //需求1:在不创建对象的前提下获取子类中成员变量a:20
        System.out.println(this.a);
        //需求2:在不创建父类对象的前提下获取父类中成员变量a:10
        //java提供了一个关键字表示父类的引用:super
        //将来在子类中可以使用super关键字调用父类中的所有非私有的成员
        System.out.println(super.a);
    }
}

public class ExtendsDemo3 {
    public static void main(String[] args) {
        Zi2 zi2 = new Zi2();
        zi2.fun1();
    }
}

三、初始化

1.要想初始化子类,必须先初始化其直接父类。

2.子类的构造方法第一句话默认是super()。

3.java中的类只能进行一次初始化,不允许重复初始化。

class Fu3 {
//    Fu3(){
//        System.out.println("这是父类中的无参构造方法。。。");
//    }
    Fu3(String s) {
        System.out.println("数加 " + s);
    }
}
class Zi3 extends Fu3 {
    Zi3() {

        //方案1:当父类中没有无参构造方法的时候,使用super关键字调用其直接父类中的其他构造方法,完成父类初始化
//        super("java");
//        super();  // Fu3();

        //方案2:间接地调用父类的有参构造方法,完成父类的初始化
        this("java");

        System.out.println("这是子类中的无参构造方法。。。");
//        super();  // 不允许重复初始化
    }

    Zi3(String s){
        super(s);
        System.out.println("这是子类中的有参构造方法。。。");
    }
}

public class ExtendsDemo4 {
    public static void main(String[] args) {
        Zi3 zi3 = new Zi3();
    }
}

四、继承与成员方法的关系

1.子类访问成员变量方法遵循就近原则。

2.方法的重写(子类中出现了和父类中一模一样的方法声明(返回值类型,方法名,参数列表都和父类一模一样))。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值