day12

今天主要学了类的多态

多态的前提
1.有继承
2.有方法重写
3.有父类引用指向子类对象

成员变量:编译看左边(即父类中有没有当前变量),执行看左边(输出父类变量);
成员方法:编译看左边(即父类中有没有当前方法),执行看右边(输出子类的数据)
public class Zi extends Fu{}
Fu f = new Zi();//父类的引用指向子类(向上转型)
Zi z = (Fu)f;//(向下转型)强制转换

好处:提高了程序的扩展性
具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作
弊端:不能使用子类的特有功能

 

例子:

父类

package T001;

public class Fu {

public int age = 40;

public void call()
{
System.out.println("fucall");
}

}

子类

package T001;

public class Zi extends Fu{

public int age = 20;
public String name;
public void call()
{
System.out.println("zicall");
}

public void Z()
{
System.out.println("ZZZZZZZZZ");
}
}

测试类

package T001;

public class demo {
public static void main(String[] args)
{
Fu f = new Zi();//创建对象
System.out.println(f.age);//输出父类中的age即40
System.out.println(f.name);//因为父类中没有name,所以报错
f.call();//父类中有call方法可编译,执行的是子类中数据
}
}

day12

 

上一篇:POJ 2349 Arctic Network (最小生成树)


下一篇:暑假集训Day12 H (数论 STL)