面向对象(3):继承、引用类型数组、super的用法
系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、引用类型数组
1.引用类型数组:
(1)Student[] stus = new Student[3];
stus[0] = new Student(“zs”,25,“LF”);
stus[1] = new Student(“ls”,26,“JMS”);
stus[2] = new Student(“ww”,27,“SD”);
System.out.println(stus[0].name) //输出第1个学生的名字
stus[1].age = 28; //将第2个学生的年龄修改为28
stus[2].sayHi(); //第3个学生跟大家问好
for(int i=0;i<stus.length;i++){ //遍历学生数组
System.out.println(stus[i].name); //输出每个学生的名字
stus[i].sayHi(); //每个学生跟大家问好
}
(2)Student[] stus = new Student[]{
new Student(“zs”,25,“LF”),
new Student(“ls”,26,“JMS”),
new Student(“ww”,27,“SD”)
};
代码如下(示例):
//声明int型数组arr,包含3个元素,每个元素都是int型,默认值为0
int[] arr = new int[4];
//声明Student型数组student,包含4个元素,每个元素都是Student型,默认值为null
Student[] student = new Student[4];
//声明Air型数组as,包含6个元素,每个元素都是Air型,默认值为null
Air[] as = new Air[6];
//声明Beef型数组bs,包含8个元素,每个元素都是Beef型,默认值为null
Beef[] bs = new Beef[8];
二、继承
1.继承:
(1)作用:代码复用
(2)通过extends来实现继承
(3)超类:派生类所共有的属性和行为
派生类:派生类所特有的属性和行为
(4)派生类继承超类后,派生类具有: 派生类的+超类的
(5)一个超类可以有多个派生类
一个派生类只能继承一个超类-------单一继承
(6)继承具有传递性
(7)java规定:构造派生类之前必须先构造超类
7.1)在派生类的构造方法中若自己没有调用超类的构造方法,
----则默认super()调用超类的无参构造方法
7.2)在派生类的构造方法中若自己调用了超类的构造方法
----则不再默认提供
注意:super()调用超类构造,必须位于派生类构造方法的第一行
2.super:指代当前对象的超类对象
super的用法:
1)super.成员变量名--------------访问超类的成员变量
2)super.方法名()----------------调用超类的方法---------下次课讲
3)super()-----------------------调用超类的构造方法
代码如下(示例):
如上面的例子所示,上面的A类是一个超类,B类是一个派生类,当B的类继承了 A的类之后,在派生类的构造方法中若自己没有调用超类的构造方法,则默认super()调用超类的无参构造方法,而此时的A类中有一个有参的构造方法,则不再默认提供无参构造方法,所以B类中的代码报错,正确代码如下:
代码如下(示例):
B类继承了A类,那么必须有参传参