java多态造型_Java基础 多态 类(class) 造型(type)

概念

多态:由于参数不同而导致执行效果不同的现象

(多态变量:这个变量在运行时它所管理的那个对象的类型是会变化的)

Java的对象变量是多态的,它们能保存不止一种类型的对象

它们可以保存的是声明类型的对象,或声明类型的子类的对象

当把子类的对象赋给父类的变量的时候,就发生了向上造型

例子

interface Aniimal{

void shout();

}

class Cat implements Animal{

public void shout(){

System.out.println("喵喵");

}

}

class Dog implements Animal{

public void shout(){

System.out.println("汪汪");

}

}

class Ex11{

public static void main(String[] args){

Animal an1=new Cat();    //创建Cat对象,使用Animal类型的变量an1的应用

Animal an2=new Dog();    //创建Cat对象,使用Animal类型的变量an2的应用

animalShout(an1);    //调用animalShout()方法,将an1参数传入

animalShout(an2);    //调用animalShout()方法,将an2参数传入

}

//定义静态的animalShout()方法,接收一个Animal类型的参数

public static void animalShout(Animal an){

an.shout();

}

}

类(class)的本意是类型(type),所以,定义了一个新的类就是定义了一个新的类型

类定义了类型

子类定义了子类型

子类的对象可被当作父类的对象来使用

赋值给父类的变量

传递给需要父类对象的函数

放进存放父类对象的容器里

造型(cast):把一个类型对象赋给另外一个类型的变量的过程

子类的对象可以赋值给父类的变量

注意:Java中不存在对象对对象的赋值!

父类的对象不能赋值给子类的变量!

例子

//Vechicle是Car的父类

Vechicle v ;

Car c = new Car() ;

v = c ; //可以

c = v ; //编译错误!

可以用造型:c = ( Car )  v ;  (只有当v这个变量实际管理的是Car才行)

造型:用括号围起类型放在值的前面

对象本身并没有发生任何变化,所以不是"类型转换"

运行时有机制来检查这样的转化是否合理,ClassCastException

向上造型:拿一个子类的对象,当作父类的对象来用

向上造型是默认的,不需要运算符,向上造型总是安全的

String s="Hello";

s=" bye " ; // 这句话的意思是,原本s是管理"Hello"的,后来s去管理另外一个叫做"bye"的对象了

赋值运算符:让一个变量去管理另外一个对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值