继承与多态
继承
1. 继承概述
多个类中存在相同属性和行为时,
将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
通过extends关键字可以实现类与类的继承。
class 子类名 extends 父类名 {}
2. Java中继承的特点
- Java只支持单继承,不支持多继承。
class SubDemo extends Demo{} //ok
class SubDemo extends Demo1,Demo2...//error
- Java支持多层继承(继承体系)
class A{}
class B extends A{}
class C extends B{}
3. 方法重写
- 概念
子类中出现了和父类中一模一样的方法声明。 - 使用特点:
如果方法名不同,就调用对应的方法
如果方法名相同,最终使用的是子类自己的 - 注意事项
- 父类中私有方法不能被重写
- 子类重写父类方法时,访问权限不能更低
- 父类静态方法,子类也必须通过静态方法进行重写。
- 方法重写和方法重载的区别 ? 方法重载能改变返回值类型吗? Overload 与 Override
方法重写:
在子类中,出现和父类中一模一样的方法声明的现象。
方法重载:
同一个类中,出现的方法名相同,参数列表不同的现象。
方法重载能改变返回值类型,因为它和返回值类型无关。
4. final关键字
- 修饰类,类不能被继承
- 修饰变量,变量就变成了常量,只能被赋值一次
- 修饰方法,方法不能被重写
多态
1. 多态概述
某一个事物,在不同时刻表现出来的不同状态。
同时猫也是动物的一种,也可以把猫称为动物。
动物 d = new 猫();
2. 多态的分类:
- 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();
3. 抽象类 abstract
抽象类和抽象方法必须用abstract关键字修饰
abstract class 类名 {}
public abstract void eat();
抽象类的几个小问题
– A:抽象类有构造方法,不能实例化,那么构造方法有什么用?
用于子类访问父类数据的初始化
– B:一个类如果没有抽象方法,却定义为了抽象类,有什么用?
为了不让创建对象
– C:abstract不能和哪些关键字共存
– final 冲突
– private 冲突
– static 无意义
3. 接口 interface(implement)
- 接口的特点:
A:接口用关键字interface修饰
interface 接口名 { }
B:类实现接口用implements修饰
class 类名 implements 接口名 { }
C:接口不能实例化
D:接口的实现类
a:是一个抽象类。
b:是一个具体类,这个类必须重写接口中的所有抽象方法。
- 接口的成员特点:
A:成员变量
只能是常量
默认修饰符:public static final
B:构造方法
没有构造方法
C:成员方法
只能是抽象的
默认修饰符:public abstract
原文链接:https://lookme.blog.csdn.net/article/details/55518321
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
评论前必须登录!
立即登录