美文网首页
Java继承

Java继承

作者: 不愿透露姓名的大磊 | 来源:发表于2018-09-19 20:59 被阅读0次

    接口的定义:

    接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。

    接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。

    请记住:一切事物均有功能,即一切事物均有接口。

    与定义类的class不同,接口定义时需要使用interface关键字。

    定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件。这点可以让我们将接口看做是一种只包含了功能声明的特殊类。

    使用interface代替了原来的class,其他步骤与定义类相同:

    接口中的方法均为公共访问的抽象方法

    接口中无法定义普通的成员变量

    在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法,完成具体的逻辑.

    接口中定义功能,当需要具有该功能时,可以让类实现该接口,只声明了应该具备该方法,是功能的声明。

    在具体实现类中重写方法,实现功能,是方法的具体实现。

    于是,通过以上两个动作将功能的声明与实现便分开了。(此时请重新思考:类是现实事物的描述,接口是功能的集合。)


    特点

    1.接口中可以定义变量,但是变量必须有固定的修饰符修饰,public static final 所以接口中的变量也称之为常量,其值不能改变

    2.接口中可以定义方法,方法也有固定的修饰符,public abstract

    3.接口不可以创建对象。

    4.子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化。否则子类是一个抽象类


    继承的定义

    Java中是允许继承的,就是当A类继承B类时,那么A类就会拥有B类所有可以继承过来的内容.那么A类就叫做子类,B类就是父类

     注意:

    1.Java中只允许单继承,也就是一个类只能有一个父类;但是一个父类却可以拥有多个子类

    2.继承要合理

    3.Java所有的类默认继承自Object,是所有类的根类,每个类都直接或者间接继承他


    子类可以通过接口间接的访问父类中的私有属性

    方法重写:指的是子类从父类继承过来的方法,如果不满足子类需求时,子类可以重写父类方法实现

    重写分为:

    完全重写:不保留父类方法的实现

    不完全重写:保留父类方法实现,但是还会添加自己对象方法的实现


    抽象类的应用场景:当一个父类定义方法还对方法进行的实现,但是发现子类只要继承这个类,就会对父类的方法进行重写,那么父类对这个方法的实现就没有意义.此时就可以把这些方法定义到抽象类中,抽象类中方法都是抽象方法,因为只有声明而没有方法具体实现.

    abstract 抽象类的关键字

    抽象类只能作为父类,因为抽象类不能实例化.

    原因是它里面的方法是抽象方法,没有具体实现

    继承自抽象类的子类,必须实现抽象类中抽象方法


    接口和抽象类的相同点与区别

    相同点:

    1.都位于继承的顶端,用于被其他类实现或继承;

    2.都不能直接实例化对象;

    3.都包含抽象方法,其子类都必须覆写这些抽象方法;

    区别:

    1.抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;接口只能包含抽象方法;

    2.一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)

    3.抽象类是这个事物中应该具备的你内容, 继承体系是一种is..a关系

    4.接口是这个事物中的额外内容,继承体系是一种like..a关系

    二者的选用:

    优先选用接口,尽量少用抽象类;

    需要定义子类的行为,又要为子类提供共性功能时才选用抽象类

    相关文章

      网友评论

          本文标题:Java继承

          本文链接:https://www.haomeiwen.com/subject/ftdwnftx.html