多态
多态:指一个对象有多种形态,也可以说是父类的引用指向子类的对象
Person person = new Chidren();
好处:
1.多态中 把所有子类 都 当做父类来看,屏蔽了子类间的不同
2.增强程序的通用性
3.统一调用标准
特点:
1.有继承关系 + 发生方法重写
2.父类 引用 指向 子类对象 Animal d = new Dog();
3.编译看左边,运行看右边
public class C1 {
public static void main(String[] args) {
//创建子类对象测试
//Son s = new Son();
//s.Person();//重写前是父类,重写后是子类
//父类引用 指向 子类对象
Father f = new Son();
//编译看左边----保存成功了吗
// 运行看右边---出的结果看子类
//多态用来统一标准--标准就是父类
f.Person();//方法声明用父类的 方法体用子类的
//f.run(); //注意 多态只能调用父类的方法,不能调用子类的特殊方法
}
}
// 多态前提 继承+重写
//父类一般提供 共性的功能 -- 父类是标准
class Father{
public void Person(){
System.out.println("爸爸是人");
}
}
class Son extends Father{
@Override
public void Person(){
System.out.println("儿子也是人");
}
public void run() {
System.out.println("我会跑步");
}
}
---------------------------------------------------------------------------
多态中的成员变量
public class C2 {
public static void main(String[] args) {
// 父类引用 指向子类对象
Father2 f2 = new Son2();
f2.Age();//父类的声明 子类的方法体
System.out.println(f2.age);//60--调用父类的成员变量
f2.Eat();//执行了父类声明 方法体也是父类的
Son2.Eat();
}
}
class Father2{
int age = 60;
public void Age(){
System.out.println("父类方法");
}
//静态方法不存在重写现象
static public void Eat(){
System.out.println("父类eat()");
}
}
class Son2 extends Father2{
int age = 20;
@Override
public void Age(){
System.out.println("子类重写");
}
//不算重写
static public void Eat(){
System.out.println("子类eat()");
}
}
浙公网安备 33010602011771号