【Java】继承和多态

本文探讨了Java中继承的super关键字用法,如何解决构造方法中的this与super冲突,以及重载的概念、final关键字在常量和类中的应用。重点讲解了多态的原理和实现,包括向上转型与动态绑定,以及向下转型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继承

        

super关键字

 // super代表子类从父类继承过来的空间的地址

当父类和子类的成员名相同时 用super.关键字可以使用父类的成员

同名时候使用this,调用的是子类的成员(和内外部类相同有自己优先的原则)
不能在静态的方法中使用super,因为super和this一样,是依赖对象的
super.data
super.func
super();  //访问父类的构造方法

特别的,对protected访问权限,不同包的子类进行成员访问时,也是通过super.,因为本质上也是访问父类

子类对象的初始化        

写子类的构造方法时 一点要先用super()调用父类的构造方法(写在第一行) 再进行子类构造方法的编写

public Cat (String name, int age, String hair) {
 super(name,age);
 this.hair = hair;
}

super调用构造方法和this调用构造方法都是需要放在第一行,所以两者必然冲突不能共存。

在一个类中 对于执行顺序 有:
静态代码块 > 实例代码块 > 构造方法
若有类的继承 子类父类都有静态/实例代码块即构造方法 有:
父静态代码块 > 子静态代码块 > 父实例代码块 > 父构造方法 > 子实例代码块 > 子构造方法

不想让一个类被继承就加上final关键字 使之成为密封类

一个类可以成为另一个类的成员(所以也可以成为参数)
class Student {}
class Teacher {}
class money {}
class School {
    private Student[] students;
    private Teacher[] teachers;
    private Money money;
}
// 能用类作数组 也能作变量?

Overload重载

        一个类的两个方法,有相同的名称,不相同的方法签名,则称为重载。这个一个类,包含了类的继承,如:

class A {
    public void re(){
    }
}
class B extends A {
    public int re(int n){
    }
}

        re方法构成重载。

final关键字

        常量、密封类、密封方法

多态

        子承父类,然后子类中对父类方法重写,在另一个类的主函数中调用该方法展现的不同子类中重写的内容,就是多态。(通常需要这个方法的参数类型是父类的对象)如:

 

 

多态的存在的必要条件!!!!!

继承 / 重写 / 父类引用子类对象

Father father =  new Son():

father.fun();调用的是Son重写的fun方法

向上转型

动态绑定

        将实例化的子类对象赋值给父类的引用后,引用子类重写的方法,就会形成动态绑定。如:

class Dad {
    public void sayHi () {
    System.out.println("Hi");
    }
}
class Son extends Dad {
    @Override
    public void sayHi () {
    System.out.println("Hello");
    }
}
class Test {
    public static void test (Dad dad) {
        dad.sayHi();
    }
    public static void main () {
        test(new Son());
//输出 Hello
    }
}

        动态绑定的含义是,在编译的时候显示调用的是父类的sayHi,但实际上还有一步转到了子类的sayHi上去

        动态绑定是多态实现的基础,可以使得同一个方法表现不同状态。

向下转型        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值