黑马程序员技术交流社区
标题:
毕老师课程多态总结分享,请大家补充。
[打印本页]
作者:
余海龙
时间:
2012-2-2 15:11
标题:
毕老师课程多态总结分享,请大家补充。
本帖最后由 余海龙 于 2012-2-6 14:00 编辑
多态:
体现:父类的引用指向了子类的对象。
基本操作思想:以前创建本类对象,调用该对象的方法,指挥对象做事情,可是当对象太多是,指挥变的很麻烦。
可以找到这些对象的共性类型,对这些共性类型进行操作,这样可以把复杂的事情简单化
前提:类与类之间必须有关系,要么继承,要么实现。
一般都会有覆盖动作。
好处:提高了程序的扩展性。
后期派生出来的子类的功能内容可以被前期所写的代码使用。
局限性:只能使用子类覆盖父类中的功能,子类的特有功能,不能使用。
例子:
Animal a = new Cat(); // 类型(引用型)提升。向上转型。
a 只能用Animal中的方法。
Cat c = (Cat)a; // 向下转型。
c 即可用Animal中的方法,也可以用Cat中的方法。
Dog d=(Dog)a; // 类型转换异常
向下转型:当需要调用到子类的特有数据时。
向上转型:当只使用子类覆盖父类功能的功能,不使用子类特有功能时。(强制转换异常)
例子:
毕姥爷 x = new 毕老师();
x.讲课();// 调用的是(子类)毕老师的讲课功能
毕老师 y = (毕老师)x;
y.看电影();// 调用的是(子类)毕老师的看电影功能。
判断应用型对象所属类型:用 instanceof
(对象名 instanceof 引用类型) 返回boolean类型值
判断子类型,强转父类型
(面试)
多态出现后,调用子类成员的特点:
1, 成员变量:
编译运行看左边。
2, 成员函数:
编译看左边、运行看右边
(所属于对象)
3, 静态函数:
编译运行看左边
静态方法是绑定在所属的类上的,所以他只参考引用变量所属的类。
例子:
Fu f = new Zi ();
f.num = 2; // 给父类变量num赋值 ,引用谁,调用谁。
f.method() ;// 调用时,编译检查父类是否有method()函数,运行调用子类中的method方法
// 如果method()方法是静态的,调用的是父类的method()方法。
因为静态方法绑定在所属的类上。
作者:
张建银
时间:
2012-2-2 15:23
所谓继承就是把父类的所有东东给子类,如果一个儿子继承了老子的所有遗产,儿子没有动用遗产一毛钱,那么这个儿子就跟老子是一样的东西,如果儿子动用了老子的财产没有加@override字样,就出现了2个同名的方法,编译器不让通过,加了@override字样,注解帮你下决定用儿子的方法
作者:
刘基军
时间:
2012-2-2 15:52
张建银 发表于 2012-2-2 15:23
所谓继承就是把父类的所有东东给子类,如果一个儿子继承了老子的所有遗产,儿子没有动用遗产一毛钱,那么这 ...
Java大小写敏感,应该是:@Override,而不是@override
class Test
{
void print()
{
System.out.println("I am Test...");
}
}
class TestDemo extends Test
{
public static void main(String[] args)
{
Test t = new TestDemo();
t.print();
}
@Override
void print()
{
System.out.println("I am TestDemo...");
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2