美文网首页
java-面向对象之多态

java-面向对象之多态

作者: pretty_rain | 来源:发表于2019-08-13 17:00 被阅读0次

1.多态

1.多态理解
同一个对象在不同时刻体现出来的不同状态。
2.多态的前提
a:有继承或者实现关系。
b:有方法重写。
c:有父类或者父接口引用指向子类对象(其实就是向上转型)。
3.多态的分类
a:具体类多态
class Fu {}
class Zi extends Fu {}
Fu f = new Zi();
b:抽象类多态
abstract class Fu {}
class Zi extends Fu {}
Fu f = new Zi();
c:接口多态
interface Fu {}
class Zi implements Fu {}
Fu f = new Zi();
4.多态中的成员访问特点
a:成员变量:编译看左边,运行看左边
b:构造方法:子类的构造都会默认访问父类构造
c:成员方法:编译看左边,运行看右边
d:静态方法:编译看左边,运行看左边
5.多态的好处和弊端
a:提高代码的维护性(继承体现)
b:提高代码的扩展性(多态体现)
c:父不能使用子的特有功能
6.多态中的转型
a:向上转型(就是多态):Father father = new Son();
b:向下转型:Son son = (Son)father;

2.抽象类

1.抽象类的作用
把多个共性的东西提取到一个类中,这是继承的做法。
但是呢,这多个共性的东西,在有些时候,方法声明一样,但是方法体。
也就是说,方法声明一样,但是每个具体的对象在具体实现的时候内容不一样。
所以,我们在定义这些共性的方法的时候,就不能给出具体的方法体。
而一个没有具体的方法体的方法是抽象的方法。
在一个类中如果有抽象方法,该类必须定义为抽象类。
2.抽象类的特点
a:抽象类和抽象方法必须用关键字abstract修饰
b:抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
c:抽象类不能实例化
d:抽象类的子类可以是一个抽象类也可以是一个重写了抽象类中所有抽象方法的具体类
3.抽象类成员的特点
a:成员变量:有变量,有常量
b:构造方法:有构造方法
c:成员方法:有抽象,有非抽象
4.抽象类的几个注意点
a:抽象类有构造方法,不能实例化,那么构造方法有什么用?
用于子类访问父类数据的初始化
b:一个类如果没有抽象方法,却定义为了抽象类,有什么用?
为了不让创建对象
c:abstract不能和哪些关键字共存?
final 冲突(因为final修饰的类不能重写)
private 冲突 (因为private修饰的类不能重写)
static 无意义 (static修饰的类可以被类名调用明显抽象类不可以被调用)

3.接口

1.接口定义
接口是一种约束形式,其中只包括成员定义,不包含成员实现的内容
2.接口的特点
a:接口用关键字interface修饰 - interface 接口名 {}
b:类实现接口用implements修饰 - class 类名 implements 接口名 {}
c:接口不能实例化
d:接口的实现类可以是一个抽象类也可以是一个具体类,这个具体类必须重写接口中的所有抽象方法。
3.接口的成员特点
a:成员变量 只能是常量 默认修饰符:public static final
b:构造方法 没有构造方法
c:成员方法 只能是抽象的 默认修饰符:public abstract
4.类与类,类与接口,接口与接口
a:类与类---继承关系,只能单继承,可以多层继承
b:类与接口---实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时,实现多个接口
c:接口与接口---继承关系,可以单继承,也可以多继承

4.抽象类和接口的区别

1.成员区别

a.成员变量
抽象类:可以是变量,也可以是常量
接口:只能是常量
b.构造方法
抽象类:有构造方法(用于子类访问父类数据的初始化)
接口:无构造方法
c.成员方法
抽象类:可以是抽象方法,也可以是非抽象方法
接口:只能是抽象方法

2.关系区别

a:类与类---继承关系,只能单继承,可以多层继承
b:类与接口---实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时,实现多个接口
c:接口与接口---继承关系,可以单继承,也可以多继承

3.设计理念不同

抽象类:is a,抽象类中定义的是共性功能。
接口:like a,接口中定义的是扩展功能。

相关文章

  • Java-面向对象-多态

    多态 体现 好处 提高了程序的扩展性。 弊端 前提 子类的特有方法如何调用呢? 向下转型的注意事项 转型总结 多态...

  • java-面向对象之多态

    1.多态 1.多态理解同一个对象在不同时刻体现出来的不同状态。2.多态的前提a:有继承或者实现关系。b:有方法重写...

  • 面向对象之------多态

    多态性,是面向对象中最重要的概念,在java中有两种体现:1.方法的重载(overload)和重写(overwri...

  • 面向对象 之 多态

    做个老实人哈哈! 多态思想 1. 接口(了解) 接口是一种约定规范,是多个抽象方法的集合。仅仅只是定义了应该有哪些...

  • Java基础day08笔记:多态|多态中成员的特点|多态的应用示

    01-面向对象(多态-概念) 接下来说一下面向对象的第三个特征:多态。 何为多态呢? 其实...

  • Java进阶 | 从整体上观察面向对象

    一、面向对象 面向对象是Java编程中最核心的思想,基本特征:继承、封装、多态。 1、特征之封装 将结构、数据、操...

  • Java进阶 | 从整体上观察面向对象

    一、面向对象 面向对象是Java编程中最核心的思想,基本特征:继承、封装、多态。 1、特征之封装 将结构、数据、操...

  • 宅男知识大补丸 学多态 认包包

    java零基础入门-面向对象篇(十) 多态 面向对象的三大特征,封装,继承我们讲完了,这次来讲多态。 多态就是指一...

  • OC面向对象—多态

    OC面向对象—多态 OC面向对象—多态 一、基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没...

  • Java学习day-07:面向对象

    一、面向过程和面向对象 1.面向对象与面向过程的区别: 面向对象具有三大特征;封装,继承,多态;面向对象与面向过程...

网友评论

      本文标题:java-面向对象之多态

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