Java之类的继承、super关键字、重写

本文详细介绍了Java中的继承概念,包括如何使用`extends`关键字创建子类,以及Java单继承的特点。通过代码示例展示了如何在子类中访问父类的成员,并解释了`super`关键字的使用。同时,文章还阐述了方法重写(override)的规则,即两同两小一大原则。

1.概念

  • 继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并扩展新的能力.
  • Java继承是会用已存在的类的定义作为基础建立新类的技术
  • 新类的定义可以增加新的数据或者新的功能,也可以使用父类的功能,但不能选择性的继承父类(超类/基类)
  • 这种继承使得复用以前的代码非常容易,能够大大的缩短开发的周期,降低开发费用.
     

2.特点

  1. 使用extends关键字来表示继承关系
  2. 相当于子类把父类的功能复制了一份
  3. Java只支持单继承
  4. 继承可以传递(爷爷/儿子/孙子这样的关系)
  5. 不能继承父类的私有成员
  6. 继承多用于功能的修改,子类可以在拥有父类功能的同时,进行功能拓展

3.代码演示

package cn.tedu.demo2;

public class ExtendsTest1 {
    public static void main(String[] args) {
    Son1 son1 = new Son1();
    son1.use1();
    Son2 son2 = new Son2();
    son2.use2();
    Grandson gds = new Grandson();
    gds.use3();
    }
}
class Father{    //定义一个父类
    public int a = 10;
    private int b = 20;
    public void print(){
        System.out.println("Father类公有方法:"+"print()");
    }
}
class Son1 extends Father{    定义一个Son1类,继承Father父类
    int a = 30;
    public void use1(){
        int a = 50;
        System.out.println("局部变量:"+a);
        System.out.println("成员变量:"+this.a);
        System.out.println("Father类公有变量:"+super.a);
        super.print();//调用父类公有方法
//        System.out.println("父类私有变量:"+super.b);//不能调用父类私有变量
    }
}

class Son2 extends Father{    //定义一个Son2类,继承Father父类
    public void use2(){
        System.out.println("调用Father父类");
        super.print();
    }
}

class Grandson extends Son2{    //定义一个Grandson类,继承Son2类,相对于是Father类的孙子类
    public void use3(){
        System.out.println("调用Father爷爷类");
        super.print();//调用Father父类里的方法(对Crandson来说是爷爷类里面的方法)
        System.out.println("调用Son2父类");
        super.use2();//调用Son2父类里面的方法
    }
}

结果显示:
局部变量:50
成员变量:30
Father类公有变量:10
Father类公有方法:print()
调用Father父类
Father类公有方法:print()
调用Father爷爷类
Father类公有方法:print()
调用Son2父类
调用Father父类
Father类公有方法:print()

4.super关键字

  • super可以访问父类中public、default、protected修饰的成员变量,不能访问private修饰的成员变量。格式为super.成员名称。
  • super可以访问父类中public、default、protected修饰的实例方法,不能访问private修饰的实例方法。格式为super.实例方法。
  • super可以访问父类中public、default、protected修饰的构造方法,不能访问private修饰的构造方法,格式为super(参数).
     

5.重写规则 

方法的重写(override)两同两小一大原则:

  • 方法名相同,参数类型相同,
  • 子类返回类型小于等于父类方法返回类型,
  • 子类抛出异常小于等于父类方法抛出异常,
  • 子类访问权限大于等于父类方法访问权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值