一、引用类型数组
-
数组是对象,属于引用数据类型
-
数组对象在堆中存储,数组变量属于引用类型,存储数组对象的地址信息,指向数组对象。
-
数组的元素可以看成数组对象的成员变量(只不过类型全都相同)
//与数组的定义格式相同
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][][];
二、继承
- 作用:代码复用
- 通过extends实现
- 超类:所有派生类共有的属性和行为
派生类:自身特有的属性和行为 - 派生类继承超类后,派生类具有:派生类的+超类的
- 一个超类可以有多个派生类;派生类只能有一个超类———单一继承
- 继承具有传递性
- 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
指代当前对象的超类对象
- super.成员变量名——访问超类的成员变量
- super.方法名() ——调用超类的方法——当我们只是在超类的基础上添加新的代码时,可以先super.方法名() 在写新的代码
- super() ——调用超类的构造方法
最后声明,以上内容是自己的学习、总结的,分享给大家。如果有不当的地方还请大佬指正交流!