面向对象03:继承与super

一、引用类型数组

  1. 数组是对象,属于引用数据类型

  2. 数组对象在堆中存储,数组变量属于引用类型,存储数组对象的地址信息,指向数组对象。

  3. 数组的元素可以看成数组对象的成员变量(只不过类型全都相同)

//与数组的定义格式相同
Student[] students = new Student[3];
//此时表示的是一个Student类型的引用,赋值时给定的是地址
//也可以通过new的形式给引用赋值
students[0] = new Student("李四",23,"奈何桥");
students[0].setName("王五");
System.out.println(students[0]);
//通过引用修改数据时,引用所指向的地址数据被修改,其他引用如也指向这个地址,引用时数据发生改变。

数组的数组

 //数组的数组 矩阵形
int[][] array = new int[3][];
array[0] = new int[]{1,2,3,4};
array[1] = new int[]{1,23,5,3,4};
array[2] = new int[]{1,3,4};
//规定数字在前c语言中的二维数组只是Java数组的一个特例
int[][][] rray = new int[3][][];

二、继承

  1. 作用:代码复用
  2. 通过extends实现
  3. 超类:所有派生类共有的属性和行为
    派生类:自身特有的属性和行为
  4. 派生类继承超类后,派生类具有:派生类的+超类的
  5. 一个超类可以有多个派生类;派生类只能有一个超类———单一继承
  6. 继承具有传递性
  7. Java规定:构造派生类之前必须先构造超类
    在派生类的构造方法中若没有调用超类的构造方法——则默认super()调用超类的无参构造方法
    在派生类的构造方法中若调用超类的构造方法——则不再默认super()调用超类的无参构造方法
    注意:super()必须在所有派生类构造方法的第一行

2.1 定义一个Person类(超类)

/**
 * 创建超类,将Student和Doctor中相同的属性和方法抽到超类中
 */
public class Person {
    //属性
    public String name;
    public int age;
    public String address;
	//构造方法
    public Person(String name, int age, String address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }
	//行为
    public void sayHi(){
        System.out.println(name + age + address);
    }
}

2.2 定义Student、Doctor类继承Person类

/**
 * 继承Person,并创建特有的属性和行为
 */
public class Student extends Person{
    //成员变量
    int stuId;
    //构造方法
    public Student(String name, int age, String address, int stuId) {
        //如果超类时无参构造方法,可以不写,默认调用super()
        super(name, age, address);
        this.stuId = stuId;
    }
    @Override
    public void sayHi() {
        super.sayHi();
        System.out.println("我是学生");
    }
}
/**
 * 继承Person,并创建特有的属性和行为
 */
public class Doctor extends Person{
    //成员变量
    int level;
    //构造方法
    public Doctor(String name, int age, String address) {
        super(name, age, address);
    }
    @Override
    public void sayHi() {
        System.out.println("我是医生");
    }
    //特有的行为方法可以在子类中追加定义
    public void seeBody() {
        System.out.println("看病");
    }
}

2.3 定义一个BigStudent类继承Student

/**
 * 继承学生类,体现继承的传递性
 */
public class BigStudent extends Student{
    //构造方法
    public BigStudent(String name, int age, String address, int stuId) {
        super(name, age, address, stuId);
    }
    //特有行为
    public void writeFile(){
        System.out.println("大学生写文件");
    }
}

三、super

指代当前对象的超类对象

  1. super.成员变量名——访问超类的成员变量
  2. super.方法名() ——调用超类的方法——当我们只是在超类的基础上添加新的代码时,可以先super.方法名() 在写新的代码
  3. super() ——调用超类的构造方法
    最后声明,以上内容是自己的学习、总结的,分享给大家。如果有不当的地方还请大佬指正交流!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值