类的继承,抽象类,接口的实现

一. 类的继承

1.定义:继承是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性,行为.

        注意事项:①子类可以直接访问父类中的非私有的属性和行为

                       ②子类继承父类的方法但是不会继承父类的构造方法.

2. 定义格式:

class 子类 extend 父类 {

}

3.继承后的特点:

    ①.如果子类中没有出现和父类重名的成员变量,访问没有影响,但是如果出现了和父类重名的成员变量,则想要访问父类的成员变量需要使用super.父类成员变量名来进行访问.

    ②.如果子类中没有出现和父类重名的成员方法,没有影响,如果出现了和父类重名的成员方法,发生方法重写.声明不变,重新实现.子类可以根据自己的需要定义自己特定的行为.

注意:1.子类方法重写时,必须保证权限大于父类权限.

        2.子类覆盖父类方法时,返回值类型,函数名,参数列表都要一模一样.

4.构造方法:

        ①.构造方法的名字与类名一致,子类无法继承父类的构造方法

        ②.构造方法的作用是初始化成员变量.在子类的初始化过程中,必须先执行父类的初始化动作.子类的构造方法中默认有一个super(),父类成员被变量初始化后才可以给子类使用

        ③.父类空间优先于子类对象产生,每次创建子类对象是,先初始化父类空间,再创建子类对象

 5.继承的特点

        ①JAVA只支持单继承,不支持多继承

        ②JAVA支持多层继承

        ③顶层父类是Object类,所有的类默认继承Object类

二.抽象类

        1.定义:没有方法体的方法是抽象方法,有抽象方法的类是抽象类

        2.使用:继承抽象类的子类必须重写父类的所有抽象方法,否则也必须声明为抽象类.抽象类不能创建对象

        3.注意事项:

                ①.抽象类不能创建对象,如果创建了,编译会无法通过.只能创建其非抽象类的子类的对象(就算创建了抽象类的对象,但是调用抽象的方法,人家方法连方法体都没有,调用一点用都没有,没有意义)

                ②抽象类可以有构造方法,但是不是用来创建这个抽象类的对象用的,而是给子类创建对象的时候初始化父类成员用的.

                ③抽象类不一定有抽象方法,没有抽象方法的也可以声明是抽象类(这种东西的目的不是让人用来创建对象使用的,而是用于某些特殊的类结构设计,就算没有抽象方法,声明是抽象类,要创建对象是不会给编译过的)

三.接口

        1.概述:接口是一种引用类型,是方法的集合.接口的内部主要就是封装了方法,包含抽象方法,默认方法和静态方法私有方法

        2.定义格式: public interface 接口名称 { }

                ①.抽象方法:使用abstract关键字修饰,可以省略abstract,没有方法体,供子类实现使用

                ②.默认方法:使用default修饰,不可以省略,给子类调用或者重写用的

                ③.静态方法:用static修饰,供接口直接调用

                ④.私有方法:private修饰,给接口的默认方法或者静态方法调用

3.基本实现:class 类名 implements 接口名 { }

        注意:①.必须重写接口中的所有抽象方法

                ②.继承了接口的默认方法可以直接调用或者重写

默认方法的使用可以继承也可以重写,但是只能通过实现类的对象来调用

4.接口的多实现:一个类可以实现多个接口,.一个类能继承一个父类,同时实现多个接口

        格式: class 类名 ( extends 父类名 )implements 接口名1,接口名2,接口名3........{  } 

5.注意事项:

                ①接口中,有多个抽象方法时,实现类必须重写所有抽象方法.如果抽象方法有重命名的,只需要重写一次. 

                ②有多个默认方法时,实现类都可以继承使用.如果默认方法有重名的,必须重写一次

                ③.接口中存在同命名的静态方法不会冲突,因为只能通过各自接口名访问静态方法.

6.优先级

        当一个类既继承父类又实现多个接口时,如果父类的成员方法有和接口默认方法重名的,子类就近选择执行父类的成员方法

7.接口的多继承

        注意:子接口继承父接口时,如果父接口的默认方法有重名的,那么自接口需要重写一次

                        子接口重写默认方法时,dafault关键字可以保留

                         子类重写默认方法时,default关键字不可以保留

8.其他成员特点:

        ①.接口中无法定义成员变量,但是可以定义常量 默认使用public static fianl修饰

        ②.接口没有静态代码块,没有构造方法

                

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值