格式
- 父类名称 对象名=new 子类名称();
- 或者
- 接口名称 对象名=new 实现类名称();
public class fu {
public void method() {
System.out.println("父类方法");
}
public void method2() {
System.out.println("父类特有方法");
}
}
public class zi extends fu{
@Override
public void method() {
System.out.println("子类方法");
}
}
public class duotai {
public static void main(String[] args) {
//使用多态的写法
fu obj=new zi();
//当父子类方法重名,new的谁就优先使用谁的方法。
obj.method();
//当子类对象没有的方法,则向上找。
obj.method2();
}
}
使用
一。访问成员变量的两种方法
* 1.直接通过对象名称访问成员变量,看等号左边是谁,就优先用谁,没有则向上找。
* 2.间接通过成员方法访问成员变量,看该方法属于谁,就优先用谁,没有则向上找。
* 注意:成员变量不能进行覆盖重写,只有成员方法能进行覆盖重写。
public class fu {
int num=20;
public void shownum() {
System.out.println(num);
}
}
public class zi extends fu{
int num=100;
}
public static void main(String[] args) {
//使用多态的写法
fu obj=new zi();
//
System.out.println(obj.num);
obj.shownum();//子类没有覆盖重写,就是父类的方法。
}
}