------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1.多态
定义:某一类事物的多种存在形态
例:动物中猫,狗
猫这个对象对应的类型是猫类型
猫 x=new 猫();
同时猫也是动物中的一种,也可以把猫称为动物
动物 y=new 猫();
动物是猫和狗具体事物中抽取出来的符类型
1.1多态的表现形式
父类的引用指向了自己的子类对象
父类的引用也可以接受自己的子类对象
1.2多态的前提
必须是类与类之间有关系.要么继承,要么实现
通常还有一个前提:存在覆盖
1.3多态的好处
多态的出现大大的提高了程序的扩展性
1.4多态的弊端;
提高了扩展性,但是只能使用父类的应用访问类中的成员
多态的应用:abstract class Student
{
public abstract void study();//定义一个抽象的学生类,因为不同的班学习内容是不同的,使用抽象方法
public void sleep(){
System.out.println("sleep");
}
}
class BaseStudent extends Student
{
public void study(){//子类实现父类的抽象方法
System.out.println("base study");
}
public void sleep(){
System.out.println("base sleep");
}
}
class AdvStudent extends Student
{
public void study(){
System.out.println("adv study");
}
public void sleep(){
System.out.println("adv sleep");
}
}
class DuoTai
{
public static void main(String[] args){
Student b=new BaseStudent();
doIt(b);
}
private static void doIt(Student s){
s.study();
s.sleep();
}
}
1.5多态的出现代码中的特点(多态使用的注意事项)
在多态中成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法.如果没有编译失败
在运行时期:参阅对象属性的类中是否有调用的方法
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边
面试:开发用不到
1.成员变量
class Fu
{
int num=5;
}
class Zi extends Fu
{
int num=7;
}
class DuoTai01
{
public static void main(String[] args){
Fu f=new Zi();
System.out.println(f.num);
Zi z=new Zi();
System.out.println(z.num);
}
}<strong>
</strong>
执行结果:
5
7
在多态中成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)
2.静态方法:class Fu
{
int num=5;
static void method1(){
System.out.println("Fu method");
}
}
class Zi extends Fu
{
int num=7;
static void method1(){
System.out.println("Zi method");
}
}
class DuoTai01
{
public static void main(String[] args){
Fu f=new Zi();
f.method1();
Zi z=new Zi();
z.method1();
}
}
执行结果:
Fu method
Zi method
在多态中,静态成员函数的特点:
无论编译和运行,都参考左边
接口型引用指向自己的子类对象
接口的出现提高了功能扩展性
接口型引用指向子类对象提高了程序的扩展性
接口降低了耦合性,提高了功能扩展性,提供了规则