class day6_26_1{
public static void mian(String[] args){
Fu2 fu2 = new Zi2();//父类引用子类对象
fu2.print();//fu
}
}
class Fu2{
public void print(){
System.out.println("fu");
}
}
class Zi2 extends Fu2{//有继承关系
public void print(){
System.out.println("zi");
}
}
/*
多态
什么是多态?
多种状态
是指一个对象在不同的时刻,表现出来的不同形态
比如说:一个水滴,分为液态-气态-固态
多态的前提条件?
1,要有继承关系
2,要有方法重写
3,要有父类引用指向子类对象
成员变量
口诀:编译看左边,运行看左边
成员方法
口诀:编译看左边,运行看右边
静态方法(static)
口决:编译看左边,运行看左边
class Fu2{
public void print(){
}
}
class Zi2 extends Fu2{//有继承关系
public void print(){//有方法重写
}
}
class Demo{
public static void mian(String[] args){
Fu2 fu2 = new Zi2();//父类引用子类对象
}
}
*/
/*
多态间子父类之间成员变量的关系?
父类中有一个成员变量,子类中有一个成员变量
如果两个变量的名字不同的话:
class Fu2{
int i = 1;
}
class Zi2 extends Fu2{//有继承关系
int j = 2;
}
class day6_25_2{
public static void mian(String[] args){
Fu2 fu2 = new Zi2();//父类引用子类对象
System.out.println(fu2.i);
System.out.println(fu2.j);//编译报错
}
}
通过结果分析,父类引用中不能使用子类的成员变量
如果两个变量的名字不同的话:
class Fu2{
int i = 1;
}
class Zi2 extends Fu2{//有继承关系
int i = 2;
}
class day6_25_2{
public static void mian(String[] args){
Fu2 fu2 = new Zi2();//父类引用子类对象
System.out.println(fu2.i);
}
}
通过结果分析,父类引用只能使用自身带的成员变量,不能使用子类中的成员变量
多态间子父类之间成员方法的关系?
父类中有一个成员方法,子类中有一个成员方法
class Fu2{
public void printfu(){
System.out.println("fu");
}
}
class Zi2 extends Fu2{//有继承关系
public void printzi(){
System.out.println("zi");
}
}
class day6_25_2{
public static void mian(String[] args){
Fu2 fu2 = new Zi2();//父类引用子类对象
fu2.printfu();//fu
fu2.printzi();//编译报错
}
}
通过结果分析,父类中不能使用子类特有的方法
如果两个方法的名字相同的话:
class day6_26_1{
public static void mian(String[] args){
Fu2 fu2 = new Zi2();//父类引用子类对象
fu2.print();//zi
}
}
class Fu2{
public void print(){
System.out.println("fu");
}
}
class Zi2 extends Fu2{//有继承关系
public void print(){
System.out.println("zi");
}
}
通过结果分析,父类引用可以使用子类中重写父类的方法
*/