@月月鸟
封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。
继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?
多态一词的通常含义是指能够呈现出多种不同的形式或形态。而在程序设计的术语中,它意味着一个人特定类型的变量可以引用不同类型的对象,并且能够自动的调用引用的对象的方法,也就是根据作用到的不同对象类型,响应不同的操作。
方法重写是实现多态的基础。
多态的实现
实现的条件
Java实现多态有三个必要条件:继承、重写、向上转型。
// Pet 父类
class Pet {
void toHospital() {
System.out.println("宠物看病");
}
}
// Bird 子类
class Bird extends Pet {
void toHospital() {
System.out.println("小鸟看病");
}
void run() {
System.out.println("会跑");
}
}
// Dog 子类
class Dog extends Pet {
void toHospital() {
System.out.println("狗狗看病");
}
void fly() {
System.out.println("会飞");
}
}
//调用类
class Test {
public static void main(String[] args) {
Pet pet=new Dog();
pet.toHospital();
pet =new Bird();
pet.toHospital();
if(pet instanceof Dog) {
Dog dog=(Dog)pet;
dog.fly();
}else if(pet instanceof Bird) {
Bird bird=(Bird)pet;
bird.run();
}
}
}
向上转型:
<父类型><引用变量名>=new<子类型>();
将一个父类的引用指向一个子类对象称为向上转型。系统会自动类型转换。
向下转型:
<子类型><引用变量名>=(<子类型>)<父类型的引用变量>;
instanceof运算符:
使用instanceof时,对象的类型必须和instanceof后面的参数所指定的类有继承欢喜,否则会出现编译错误。
多态的应用:
- 使用父类作为方法的形参
- 使用父类作为方法的返回值
以上内容可能会有出入,部分出自转载,欢迎大家踊跃留言指正。