多态:指的是一种事物,在不同时刻所表现出来的不同状态
猫是类型,猫也是一种动物
多态的前提:1.要有继承关系
2.要有方法重写,当然不重写也可以,但是没有太大意义
3. 多态 就是 父类引用指向子类对象
public class MyTest {
public static void main(String[] args) {
//Dog dog = new Dog(); //狗是狗类型的一种
//dog.eat();
Animal an = new Dog(); //父类引用指向子类对象
an.eat(); //采用多态的方式,调用方法时,以子类重写过后的方法为准
}
}
class Animal {
public void eat() {
System.out.println("吃饭");
}
}
class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗爱吃骨头");
}
}
Zi zi = new Zi();
System.out.println(zi.num);
多态的形式访问成员变量的特点
编译看左边,运行也看左边
Fu fu=new Zi();//父类引用,指向子类对象
System.out.println(fu.num);
多态的形式访问成员方法的特点,编译看左边,运行看右边
public class MyTest3 {
public static void main(String[] args) {
Fu fu=new Zi();//父类引用,指向子类对象
System.out.println(fu.num);
fu.test();
fu.test2();
}
}
class Fu{
int num=100;
public void test(){
System.out.println("父类的test方法");
}
public static void test2() {
System.out.println("父类的test静态方法");
}
}
class Zi extends Fu {
int num=200;
public void show(){
System.out.println(num);
}
public void test() {
System.out.println("子类的test方法");
}
public static void test2() {
System.out.println("子类的test静态方法");
}
}
方法重写:当子类中出现了和父类一模一样的方法时(方法名,参数列表,返回值类型都一样),那么这个时候就会发生方法重写,我们在调用方法时,就会以子类重写过后的方法为准
为什么要有方法重写,子类有的时候对父类的方法实现并不满意,他并不想要原封不动的继承下来,而是想要自己实现功能逻辑,或者说,他想要在父类的方法基础之上扩展一些自己的功能,那么这个时候他可以使用方法重写。
public class MyTest {
public static void main(String[] args) {
Zi zi = new Zi();
zi.show();
zi.test();
}
}
class Fu {
public void show() {
System.out.println("我是父类的show方法");
}
}
class Zi extends Fu {
public void test() {
System.out.println("我是子类的test方法");
}
public void show(){
System.out.println("我是子类的show");
}
}
版权声明:本文为XXY411636013原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。