java自学日记no.6

data:2020/2/16

多态

多态是指允许程序中出现重名现象
java语言中含有方法重载对象多态两种形式的多态

方法重载:
在一个类中,允许多个方法使用同一个名字,但方法的参数不同,完成的功能也不同

对象多态:
子类对象可以与父类对象进行相互的转换,而且根据其使用的子类的不同完成的功能也不同

多态前提

1.要有继承关系
2.要有方法重载
3.要有父类对象引用子类对象 Father f = new Son()

多态的好处和弊端

好处:
提高了代码的维护性(继承保证),提高了代码的扩展性(多态保证)

弊端:
不能使用子类特有的属性和方法(要有父类对象引用子类对象的时候,如果**f.print()**在父类中没有定义,那么就会报错)

所以在已经向上转型之后可以来个向下强转

向上转型:
Father f = new Son();
向下转型:
Son son = (Son)f

关键字instanceof

判断前面的引用是否是后面的数据类型

if (a instanceof Cat) {
...
} else if (a instanceof Dog) {
...
} else {
...
}

抽象类abstact

抽象类是为方法覆盖而提供的类结构

1.抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或是接口
2.抽象类不能实例化,可由具体的子类实例化
3.抽象类的子类:要么也是抽象类,要么重写抽象类中所有的抽象方法

抽象类的成员特点:
4.成员变量:既可以是变量,也可以是常量,不能用abstart修饰
5.构造方法:有,用于子类访问父类构造函数并初始化(super())
6.成员方法:既可以是抽象的(强制子类做的),也可以是非抽象的(子类继承过去的)

abstract不能和哪些关键字共存:
7.static:abstract不能和static共存,因为abstract没有方法体,而static可以用类名直接调用,这么一来就没有意义了
8.finna:abstract不能和finnal共存,一个要重写,一个不能重写
9.private:abstract不能和private共存,abstract是要被子类看到并重写,而private不能让子类看到

接口(interface)

接口的成员特点:
1.成员变量:只能是变量,并且是静态和公共的(默认public static finnal)
2.接口中的方法都是抽象的(默认public abstract)
3.接口中没有构造方法,一个类默认继承的是Object类

类与类:继承关系,单继承,可以多层继承
类与接口:实现关系,可以单实现,也可以多实现
接口和接口:继承关系,可以单继承,也可以多继承

抽象类与接口
抽象类(is a,定义的是共性功能):其实和普通类一样,只是可以定义抽象方法
接口(like a,定义的是扩展功能):属性只能是常量,方法只能是抽象

发布了38 篇原创文章 · 获赞 4 · 访问量 838

猜你喜欢

转载自blog.csdn.net/Hide111/article/details/104344192