1.引用类型数组(下):
区别1:给引用类型数组的元素赋值时,需要new个对象
区别2.若想访问应用类型数组的元素数据,需要通过数组元素去打点
public class world {
public static void main(String[] args) {
Student[] st = new Student[3];
st[0].name = "zhangsan";
st[1].age = 18;
st[2].address = "beijin";
2.继承
作用:代码复用
通过extends实现继承
超类/父类:共有的属性和行为
派生类/子类:特有的属性和行为
派生类可以访问本身+超类,但超类不能访问派生类
一个超类可以继承多个派生类,但一个派生类只能有一个超类---单一继承
具有传递性
java规定:构造派生类之前先必须构造超类
在派生类的构造方法中若没有调用超类的构造方法,则编译器默认super()调用超类的无参构造方法
在派生类的构造方法中若自己调用了超类的构造方法,则不再提供默认
注意:super()调用超类的构造方法,必须位于派生类构造方法的第一行
public class SuperDemo {
}
class Eoo{//超类,默认有一个Eoo(){}无参构造方法,手动写之后不再提供无参构造方法
Eoo(int a ){
}
}//在派生类的后遭方法中若自己调用了超类的构造方法,则不再默认值
class Foo extends Eoo{//派生类,默认有一个无参构造方法,默认有一个super()无参;当超类构造有参之后,无参调用不了,必须传参,不然会报错
Foo(){
super(5);//超类有参数所以必须传参,如没有参数super()可以不写
}
}
3.super:指代当前对象的超类对象
super的用法:
super.成员变量名----------访问超类的成员变量
注意:当超类与派生类中包含同名成员变量时,访问超类成员变量,则必须使用super.
super.方法名()--------------调用超类的方法
super()------------------------调用超类的构造方法
4.向上造型:
超类型的引用指向派生类的对象
能点出来什么,看引用类型-----------这是规定,记住就可以
何时向上造型::
多种角色能干的事情都是一样的时候,可以将多种角色统一造型到超类数组中,实现代码复用
例如:学生,老师,家长,都要吃饭,睡觉等,可以将学生老师家长都统一造型到超类数组中,这样一个for就可以实现对象遍历同一件事情
讲超类作为参数或者返回值,传递派生类对象或返回派生类对象,也是在向上造型
public static void main(String[] args) {
Aoo o1 = new Aoo();
o1.a = 1;
o1.show();
//o1.b = 2; //编译错误
//o1.test(); //编译错误,超类不能访问派生类的
Boo o2 = new Boo();
o2.b = 1;
o2.test();
o2.a = 2; //正确
o2.show(); //正确,派生类可以访问超类的
Aoo o3 = new Boo(); //向上造型
o3.a = 1;
o3.show();
//o3.b = 2; //编译错误
//o3.test(); //编译错误,能点出来什么,看引用的类型
}
}
class Aoo{
int a;
void show(){
}
}
class Boo extends Aoo{
int b;
void test(){
}
}
补充:
1.继承要符号is(是)的关系
2.超类的意义
封装共有的属性和行为-------实现代码复用
为所有派生类提供了统一的类型--------向上造型