JAVA基础学习(二)——继承、多态、接口

书接上回。


前言

面向对象的编程中,继承、多态等是非常重要的内容。这里主要总结概念性知识,具体实操需要自行练习。


一、继承与组合

        继承是指一个类获得了另一个类的全部非private字段和方法,同时有扩展了其他字段和方法。由于一些字段不想直接被外部引用又需要传递给子类,因此需要定义为protected。

        在子类中,使用super来表示父类,使用super.Name来表示父类的字段。在定义构造函数时,如果构造函数第一句没有super()那编译器会自动添加super()代表调用父类的无参构造。注意,如果父类调用了有参构造且没有默认的无参构造,那么子类构造函数第一句必须是super(...)有参构造函数。如果类有final修饰,那么任何类不得继承该类。

        向上转型:Person P = new Student();将子类安全转化成父类,代表向上转型。

        向下转型:Person p = new Person();Student s=(Student) p;这种情况就存在一个问题,因为父类的方法字段一般少于子类的方法字段,因此需要先进行instanceof判断,再实现向下转型。即第二个语句变为if(p instanceof Student){Student s=(Student) p;}

        一般学生可以继承人的属性,学生看书,最好不要学生继承书的属性,可以直接定义书的字段。这就是组合——has关系,继承是is关系。

二、多态与接口

1.多态

        多态是指一个事物的多种形态。对父类中定义的各种方法,可以在子类中重写,使用注解@override来检查。注意,如果父类方法被覆写,需要使用super来调用父类方法。可以使用final阻止覆写。

        这里总结一下final:①阻止方法被覆写②阻止类被继承③命令字段必须在构造函数中初始化且不可被修改。

2、接口

        如果多态中,父类的方法不需要实现,只需要定义一种规范,让子类都来实现这个规范,那么可以通过抽象类来实现。在抽象类中,需要规范使用的方法称为抽象方法,public abstract void run();对应的类也需要使用abstract修饰。

        抽象类中,如果所有的方法都是抽象方法,没有字段,那么这个抽象类就被称为接口。一个类如果要实现接口,可以使用implements。接口也可以继承其他接口。接口中,如果新增一个方法,那么所有子类都需要实现该方法,因此可以定义一种default方法,default void run();对于有需要的类直接覆写即可。与抽象类中的普通方法(非抽象方法)相比,default是无参数的,因为接口中没有任何字段。

三、面向对象的其他内容

        静态字段属于所有实例“共享”的字段,实际上是属于class的字段;调用静态方法不需要实例,无法访问this,但可以访问静态字段和其他静态方法;静态方法常用于工具类和辅助方法。

        还有静态类、内部类、匿名类等内容,在此不一一赘述。


总结

这里仅仅把继承、接口、多态的基础概念介绍了一下,真正应用是需要结合spring、注解等知识学习的,后续会一一介绍。

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值