Day08第八天java基础-----------多态
2012-11-01 19:50
281 查看
------- android培训、java培训、期待与您交流!
----------
1、多态:
可以理解为事物不同的表现形态。
表现形态:父类引用指向自己的子类对象。
也可以理解为父类接受自己的子类对象
class DemoA
{
void show()
{
//方法体中的内容
}
void show()1
{
//父类中没有被覆写的方法
}
}
class DemoB extends DemoA
{
void show()
{
//方法体中的内容。
}
public static void main(String args[])
{
DemoA a = new DemoB();//父类的引用指向自己的子类对象
a.show(); //调用父类中被子类覆写的方法
a.show1();//调用父类中没有被子类覆写的方法
}
}
2、多态的前提:
必须是类与类之间有关系,要么继承,要么实现。通常还存在一个前提就是覆盖。
3.利与弊:
好处:大大的提高了扩展性。
弊处:提高了扩展性,但是只能用父类的引用访问父类的成员,也就是说,只能是继承了父类才能
访问并覆写父类中的方法。
4、前期调用功能,后期定义子类实现功能,并把子类作为参数传递进来
5、向上转型和向下转型:
类型的提升:向上转型,转成父类
向下转型:也就是说如果想用子类中特有的功能必须进行强制的转换,把父类的引用强制转换成
子类的类型:
代码如下:
class Animal{
void eat()
{
// 定义一个吃的方法
}
}
class Mao extends Animal{
void eat(){
System.out.println("猫吃鱼"); // 继承了父类中的方法并覆写了方法
}
void catchMouse(){
System.out.println("猫抓老鼠");//子类的特有方法
}
}
class Demo{
public static void main(String args[]){
Animal a = new Mao();//父类的引用指向了自己的子类对象
a.eat(); //调用子类中被覆写的方法
Mao m = (Mao)a;// 是把父类的引用强制的转换成了子类类型
m.catchMouse();// 输出了子类中特有的方法
}
}
6、多态的应用:
在多态中函数成员的特点:函数成员的特点是非静态的。
(1)、编译时参阅引用类型所属的类中是否调用有方法(也就是说父类中是否有方法被子类所重写)
(2)、运行时参阅对象所属的类中是否有调用方法。
也就是说编译时看左边,运行时看右边。
7、在多态中成员变量的特点:
无论编译和运行时都参考左边(引用类型所属的类)
8、注意一个异常:”classcastException“:是类型转换异常
----------
1、多态:
可以理解为事物不同的表现形态。
表现形态:父类引用指向自己的子类对象。
也可以理解为父类接受自己的子类对象
class DemoA
{
void show()
{
//方法体中的内容
}
void show()1
{
//父类中没有被覆写的方法
}
}
class DemoB extends DemoA
{
void show()
{
//方法体中的内容。
}
public static void main(String args[])
{
DemoA a = new DemoB();//父类的引用指向自己的子类对象
a.show(); //调用父类中被子类覆写的方法
a.show1();//调用父类中没有被子类覆写的方法
}
}
2、多态的前提:
必须是类与类之间有关系,要么继承,要么实现。通常还存在一个前提就是覆盖。
3.利与弊:
好处:大大的提高了扩展性。
弊处:提高了扩展性,但是只能用父类的引用访问父类的成员,也就是说,只能是继承了父类才能
访问并覆写父类中的方法。
4、前期调用功能,后期定义子类实现功能,并把子类作为参数传递进来
5、向上转型和向下转型:
类型的提升:向上转型,转成父类
向下转型:也就是说如果想用子类中特有的功能必须进行强制的转换,把父类的引用强制转换成
子类的类型:
代码如下:
class Animal{
void eat()
{
// 定义一个吃的方法
}
}
class Mao extends Animal{
void eat(){
System.out.println("猫吃鱼"); // 继承了父类中的方法并覆写了方法
}
void catchMouse(){
System.out.println("猫抓老鼠");//子类的特有方法
}
}
class Demo{
public static void main(String args[]){
Animal a = new Mao();//父类的引用指向了自己的子类对象
a.eat(); //调用子类中被覆写的方法
Mao m = (Mao)a;// 是把父类的引用强制的转换成了子类类型
m.catchMouse();// 输出了子类中特有的方法
}
}
6、多态的应用:
在多态中函数成员的特点:函数成员的特点是非静态的。
(1)、编译时参阅引用类型所属的类中是否调用有方法(也就是说父类中是否有方法被子类所重写)
(2)、运行时参阅对象所属的类中是否有调用方法。
也就是说编译时看左边,运行时看右边。
7、在多态中成员变量的特点:
无论编译和运行时都参考左边(引用类型所属的类)
8、注意一个异常:”classcastException“:是类型转换异常
相关文章推荐
- JAVA基础第八天学习日记_多态
- 黑马程序员_Java基础Day08_面向对象之多态(Done)
- java基础第八天 多态
- 黑马程序员-17-java基础-面向对象(3)-继承、抽象类、接口与多态
- java基础(2)-基础类型和语法(static、内部类、final、抽象类、接口、封装)(并将这些基础知识与java的三大特征关联(继承、多态、封装))
- Java面向对象基础(封装,多态)=09/13
- 黑马程序员——Java基础---面向对象(继承、多态、抽象类、接口、内部类)
- 黑马程序员——Java基础:多态及其应用
- 黑马程序员——Java基础---面向对象(多态、异常、包)
- java基础――小例子说明封装、继承、多态
- Java基础09-抽象类与多态
- 黑马程序员——Java基础---多态、内部类、异常、包
- java基础:多态
- Java基础语法(六)----面向对象(3)多态
- Java基础学习总结(5)——多态
- IT十八掌作业_java基础第八天_多线程
- java基础提高篇--java的三大特性--多态
- java语言基础(36)——面向对象(多态的代码体现以及成员之间的访问关系)
- 黑马程序员 08 Java基础教学 - 08 - 面向对象(4) 之 多态
- 黑马程序员——Java基础---多态,内部类,异常