java继承性

1、继承理解

  • 继承主要解决的问题:共性抽取
  • 继承关系中的特点:
    1. 子类可以有父类的内容,
    2. 子类还可以有自己专有的内容
    3. 继承是一个白盒复用,但他会破坏封装
    4. 继承要慎用
    5. java是单继承
    6. 一个类只能有一个父类
    7. 可以有0个或多个子类

2、继承的格式

父类就是普通的类

子类格式:

public class Student  extends Teacher{
    //……
}

3、继承中成员变量的访问特点

public class Fu {
    int numfu = 10;

    int num = 100;

    public void methodNumfu(){
        System.out.println(num);
    }

}
public class Zi  extends Fu {
    int numzi = 20;
    int num = 200;

    public void methodNumzi(){
        System.out.println(num);
    }
}
public class test {


    public static void main(String[] args) {

       Zi zi = new Zi();  //创建子类对象
       System.out.println(zi.numfu);
       System.out.println(zi.numzi);

       //当子类中的成员变量与父类中的成员变量一致是,等号左面是谁,就优先使用谁
        // 使用了子类中的成员变量
       System.out.println(zi.num);

       //调用成员方法时:回直接调用当前对象的内容
       zi.methodNumzi();
       zi.methodNumfu();
    }
}

10

20

===============

200

===============

200
100

4、区分三种变量重名问题

  1. 局部变量 直接写
  2. 本类中的成员变量 this.成员变量名
  3. 父类的成员变量 super.成员变量名
public class Fu {

    int num = 10;

}
public class Zi  extends Fu {
    int num = 20;

    public void method(){
        int num = 30;
        System.out.println("局部变量:" + num);
        System.out.println("本类中的成员变量:" + this.num);
        System.out.println("父类的成员变量:" + super.num);
    }
}

局部变量:30
本类中的成员变量:20
父类的成员变量:10

5、继承中方法的重写

概念:在继承关系中,方法的名称一样,参数列表不一样

重写:方法的名称一样,方法的参数也一样,但是方法体最终实现的内容不同,

重载:方法的名称一样,但是方法的参数列表不一样,方法体的内容也可能不同,

注意问题:

  1. 必须保证父子类方法的名称一致,参数列表也相同,@override,写在方法的前面,用来检测是不是正确覆盖重写,
  2. 子类方法的返回值必须【小于等于】父类方法的返回值范围

方法重写:主要目的是为了在不改变源代码的情况下,可以对以前写过的代码进行优化,可见下面案例:

package jicheng;

public class Phone {
    public void call(){
        System.out.println("打电话");
    }

    public void send(){
        System.out.println("发短信");
    }

    public void show(){
        System.out.println("来电显示");
    }
}

package jicheng;

public class Newphone extends Phone {


    @Override
    public void show() {
        super.show();
        System.out.println("显示头像");
        System.out.println("显示姓名");
    }
}

package jicheng;

public class Test {
    public static void main(String[] args) {

        Phone phone = new Phone();
        phone.call();
        phone.send();
        phone.show();

        System.out.println("+++++++++++++++");

        Newphone newphone = new Newphone();
        newphone.call();
        newphone.send();
        newphone.show();
    }
}

运行结果

打电话
发短信
来电显示

+++++++++++++++

打电话
发短信
来电显示
显示头像
显示姓名

6、继承中构造方法的访问特点

java中的构造方法:

  1. 方法名必须与类名相同
  2. 可以有多个参数,也可以没有参数
  3. 构造方法,没有返回值,包括没有void
  4. 默认返回值类型就是对象类型本身,
  5. 只能与new运算符结合使用

子类构造方法有一个默认的super()调用,所以一定是先父类,在子类,

super的父类调用必须是子类构造方法的第一个语句,不然会报错,还必须仅有一个,

7、super关键字用法

  1. 在子类的成员方法中,访问父类的成员变量
  2. 在子类的成员方法中访问父类的成员方法
  3. 在子类的构造方法中访问父类的构造方法
  4. super关键字访问父类内容
package jicheng;

public class Phone {

//    public Phone(){
//        System.out.println("父类的无参构造方法");
//    }

    int num = 10;

    public void methodFu(){
        System.out.println("父类的成员方法");
    }

    public Phone(int num){
        System.out.println("父类的有参构造方法");
    }

}

package jicheng;

public class Newphone extends Phone {

    int num = 20;


    //通过子类的构造方法来用super获取父类的构造方法
    public Newphone(int num) {
        super(num);
    }
    //通过子类的成员方法来用super获取父类的成员变量num;

    public  void methodNum(){
        System.out.println(super.num);
    }

    //通过子类的成员方法,来用super获取父类的成员方法
    public void methodFun(){
        super.methodFu();
    }
}

8、this关键字的三种 用法

this关键字访问本类内容,super关键字访问父类的内容

  1. 在本类的成员方法中访问本类的成员变量
  2. 在本类的成员方法中,访问本类的另一个成员方法
  3. 本类的构造方法,访问本类的另一个构造是方法

9、this与super关键字图解

在这里插入图片描述

10、java继承的三个特点

  1. java语言是单继承的,一个类的直接父类只能有一个
  2. java语言可以多级继承
  3. 一个类直接父类是唯一的,但是一个父类可以有多个子类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值