Java面向对象-多态

概念

多态:意味着允许不同类的对象对同一消息做出不同的响应
分类:
1)编译时多态(也叫设计时多态,举例如方法重载)
2)运行时多态(程序运行时决定调用哪个方法)

可以通过super关键字调用父类带参的构造方法赋值,如super(name,month);
也可以通过this关键字访问setName,setMonth进行赋值,如
this.setName(name);
this.setMonth(month);

向上转型

又叫隐式转型、自动转型

是子类转型为父类,小类转型为大类这种式的名称
例子:Animal two=new Cat()

父类引用指向子类实例,可以调用子类重写父类的方法以及父类派生的方法,但是无法调用子类独有方法!

向下转型:

1)又称强制类型转换;
2)子类引用指向父类对象,此处必须进行强制转换,可以调用子类特有的方法;
3)必须满足转型条件才能进行转换。

不能进行兄弟类间的强制类型转换,若编写该语法,则编译不会报错,但运行过程会报错

instanceof

判断对象A是否为B类的实例,或者对象A是否有B类的特征

在父类当中使用static 关键字修饰的方法不能被子类所重写。加上注解会报错。

抽象类

抽象类 在类的定义前加上abstract关键字,成为一个抽象类

抽象类 不允许被实例化,但是可以通过向上转型,指向子类实例

抽象类应用场景:某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。

抽象类作用:抽象类利用子类与父类的继承关系,既限制了子类的设计随意性,又避免了父类无意义的实例化

抽象方法

abstract 定义抽象方法,不需要不需要具体实现,不包含方法体

包含抽象方法的类一定是抽象类

一个抽象方法必须定义在抽象类中,而抽象类可以没有抽象方法。

static final private不能与abstract并存:

接口

问题引发的思考
java只支持单继承, 一个子类只有一个唯一的一个直接父类. 当两个类满足 A is a B的时候, 可以通过集成限定子类必须具有父类的通用特征.
通用特征.

  • 如何解决一个类型中同时兼容多种类型特征的问题?
  • 以及多个不同类型在无法具有共同父类的前提下依然具有相同特征的问题?
原文地址:https://www.cnblogs.com/greycdoer0/p/12990542.html