Java知识点整理(面向对象)引用类型数组(下) 继承 向上造型

本文详细讲解了Java中的引用类型数组及其与基本类型数组的区别,强调了在给数组元素赋值时需要创建对象。同时,阐述了继承的概念,包括代码复用、超类与派生类的关系以及单一继承原则。此外,介绍了`super`关键字的使用,用于访问超类的成员变量和方法。最后,讨论了向上造型的概念,即超类型的引用指向派生类对象,实现了代码复用。
摘要由CSDN通过智能技术生成

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.超类的意义

        封装共有的属性和行为-------实现代码复用

        为所有派生类提供了统一的类型--------向上造型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值