美文网首页
随笔——java中的接口、继承和多态

随笔——java中的接口、继承和多态

作者: 小书同学 | 来源:发表于2020-02-11 12:09 被阅读0次

一、多态

Java中的多态体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父类(接口)变量赋值。
举个例子,一个Child类,继承与Father类,那么这个Child类的实现类,既可以赋值给一个Child类型的引用,也可以赋值给一个Fatcher类型的引用。
所以,多态的表现就是父类的引用指向的是子类对象。
多态的前提是必须有子父类关系或者类实现接口关系,否则无法完成多态。
在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。

二、抽象类

Java中定义抽象类用的关键字是abstract,抽象类是不可以实例化的。在Java中使用多态的时候,并不需要父类可以实例化,只需要子类可以实例化,也就是只需要子类对象。
由于抽象类只能被继承,子类必须重写父类的所有抽象方法,即使子类不需要,也必须重写。

三、接口

接口用关键字interface来定义,也可以将接口看作是抽象类的延伸,可看作纯粹的抽象类。
但是接口中的方法,子类可以选择性的实现。

四、接口与继承

Java中不允许多重继承,即不允许一个子类同时继承一个或多个父类(即同时extends多个类)。但是可以使用接口实现多个(即可以同时implements多个接口,同时实现多个接口)。
这就是多重继承。
多重继承语法:
*class 类名 implements 接口1,接口2,...,接口n *

1、一个类只能继承一个类:class A extends B{}

2、一个类可以实现多个接口:class A implements B,C,...{}

3、一个接口可以继承多个接口:interface intf1 extends intf2,intf3,...{}

4、在继承类的同时也可以继承接口:class A extends B implements intf1,intf2,...{}

五、多态的使用方式

多态的使用格式一般为:
父类类型 变量名 = new 子类类型();
变量名.方法名();

1.普通类多态定义的格式
父类 变量名 = new 子类();
如: class Father {}
class Child extends Father {}
//类的多态使用
Father father = new Child();

2.抽象类多态定义的格式
抽象类 变量名 = new 抽象类子类();
如: abstract class Father {
public abstract void method();
}
class Child extends Father {
public void method(){
System.out.println(“重写父类抽象方法”);
}
}
//类的多态使用
Father father = new Child();

3. 接口多态定义的格式
接口 变量名 = new 接口实现类();
如: interface Father {
public abstract void method();
}
class Child implements Father {
public void method(){
System.out.println(“重写接口抽象方法”);
}
}
//接口的多态使用
Father father = new Child();

注意事项
同一个父类的方法会被不同的子类重写。在调用方法时,调用的为各个子类重写后的方法。

Person p1 = new Student();
Person p2 = new Teacher();
p1.work(); //p1会调用Student类中重写的work方法
p2.work(); //p2会调用Teacher类中重写的work方法
当变量名指向不同的子类对象时,由于每个子类重写父类方法的内容不同,所以会调用不同的方法。

相关文章

  • 随笔——java中的接口、继承和多态

    一、多态 Java中的多态体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个...

  • JAVA(9)继承与多态

    继承与多态 、抽象类、接口 继承: 继承是类与类的一种关系 java中的继承是单继承 继承的好处: 子类拥有父类的...

  • jvm结构&运行机制&多态实现

    浅析Java虚拟机结构与机制 浅谈多态机制的意义及实现 多态:编译时多态(重载)、运行时多态(继承父类、实现接口)...

  • java抽象类和接口小记

    Java抽象类和接口小记 Java抽象类和接口实现了java的多态.多态是面向对象程序语言的核心,在项目开发过程中...

  • 分享一些重要的Android面试题

    说一下JAVA多态的理解,以及接继承,和接口的理解 于哥在这里只讲多态,其他自己上网体会 对于多态的定义 不同类的...

  • 金9银10,分享几个重要的Android面试题

    说一下java多态的理解,以及接继承,和接口的理解 于哥在这里只讲多态,其他自己上网体会 对于多态的定义不同类的对...

  • 接口、继承和多态

    1、super 这是一个和父类相关的关键字,在构造函数中调用父类构造函数、调用父类的方法或者成员变量都要用到它。 ...

  • go语言学习(8)--Struct

    面向对象 go只支持封装,不支持继承和多态go是面向接口的编程,也可以说go所有对象都是继承了一个空接口java这...

  • 接口与抽象类的区别

    OOP 中,核心是 封装、继承 和 多态,而在 继承 中,常常关联的是 接口 和 抽象类,经常用倒是不假,但是使用...

  • Java中的继承和多态

    继承和多态是面向对象开发语言中非常重要的一个环节,若使用得当,整个程序的架构将变得非常有弹性,同时可以减少代码的 ...

网友评论

      本文标题:随笔——java中的接口、继承和多态

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