如标题所示,为了更好的理解JAVA多态(继承,向上转型,向下转型,)
前提需要理解这两个内容
1.强制转换,
2.父类型作为形参或者返回值类型,父类型引用作为实参,
一.
1.强制转换
①基本类型的强转(俗称做手术,"切除一部分数据(组织)),如下
double a=0.0D;
int b=(int)a;
②引用类型的强制转换===(就是)向下转型:父类型强转为子类型
发生在子类转型成父类(即向上转型)后(必须),再转型成子类型(一般用instan of判断下,以免发生类型转化异常)
class A{}//父类
class B extends A{}//子类
B b=new B();//此时b是B类型
A a=new B();//此时a是A类,即子类的向上转型
向上转型的条件是:①有继承结构②父类引用指向子类对象
B b2=(B)a;//向下转型(即引用类型强转)
向下转型(即引用类型强转)的条件是:①有继承结构②父类引用指向子类对象
2.父类型作为形参或者返回值类型,父类型引用作为实参,
二.多态
1.什么是多态,2.谁在多态,3.为甚么要多态?
答案:1.多态就是不同子类实现父类某个方法的代码不一样(实现不同的结果)
2.是方法在多态,和父类,子类的成员变量(属性).父类,子类的特有方法没有一点关系,侠义理解,是有@@Override的方法的多态,与其他都没有关系.
注释:不管子类父类中的成员变量和子类父类的特有方法有没有static修饰,你现在这个对象是父类就用分类的,是子类就用子类的
3.用在
1.引用类型的方法参数(形参),
2.调用方法传的参数(实参),
3.你写的方法的返回值类型.
有什么好处慢慢体会
下边的类是瞎写的,小白不要较真慢慢看
public class ChineseFather {
static String Color="黄色";
int WMEyer=5000;
public String sex="女";
public void shengao() {
System.out.println("古人身高平均160");
}
public static void shouming() {
System.out.println("古人寿命平均35");
}
}
public class Chinese extends ChineseFather {
static String Color="黑色";
String sex="男";
public void eat() {
System.out.println("子类去吃饭了");
}
@Override
public void shengao() {
System.out.println("我身高170");
}
public static void main(String[] args) {
ChineseFather CF=new Chinese();
System.out.println(CF.sex);
System.out.println(CF.Color);
CF.shengao();
Chinese CF2=(Chinese)CF;
CF2.shengao();
System.out.println(CF2.sex);
System.out.println(CF2.Color);
System.out.println(((ChineseFather )CF2).Color);
}
}
以上纯属个人观点,有不正之处,望看到后即使指出,
如果此篇对你有帮助,请一元支持