关闭

黑马程序员 面向对象 多态 需求 object

72人阅读 评论(0) 收藏 举报
分类:
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
               
1、多态:事物存在的多种体现形态

2、1)多态的体现
        父类的引用指向了自己的子类对象
   2)多态的前提
        必须是类与类之间有关系,要么继承,要么实现
        通常还有一个前提:存在覆盖。
   3)多态的好处
        多态的出现大大的提高程序的扩展性
   4)多态的弊端
        提高了扩展性,但是只能使用父类的引用访问父类中的成员
   5)多态的应用

   6)多态的出现代码中的特点(多态使用的注意事项)

3、 总-分-调用分
abstract class animal
{
        abstract void eat();
}
---
class cat extends animal
{
        //重写
        public void eat()
        {
                System.out.println("吃鱼");
        }
        //其他方法
        public void catchMouse(){}
}
---
public static void function(animal a){}//animal a=new cat();
...
class
{
        public static void main(String[] args)
        {
                //function(new cat());
                animal c=new cat();//应用数据类型提升,向上转型
                c.eat();
                //如果想要调用猫的特有方法时,如何操作
                //cat c1=new cat();这样就有创建了一个新的对象,增加的内存、

同时逻辑上可能出现差错
                //强制将父类的引用,转成子类类型
                cat c=(cat)c;//向下转型
                c.catchMouse();
               
                //千万不要出现这样的操作:animal c=new animal();cat c=

(cat)c;这是错误操作
        }
}



4、注:我们能转换的是父类应用指向了自己的子类对象时,该应用可以被提升,也可

以被强制转换。
    多态至始至终都是子类对象在做着变化

5、classCartException类型转换异常

判断引用类型是否正确
public void function(animal a)
{
        if(a instanceof cat){}
        else if(a instanceof dog){}
        ...
}

6、(常见)在多态中成员函数的特点:
        在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译

通过,如果没有编译失败。
        在运行时期:参阅对象所属的类中是否有调用的方法。
        简单总结:成员函数在多态调用时,编译看左边,运行看右边

7、(面试)在多态中,成员变量的特点:
        无论编译和运行,都参考左边(引用型变量所属的类)

class fu
{
int num=5;
}
class zi extends fu
{
int num=8;
}
fu f=new zi();
zi z=new zi();
s.o.p(f.num);//5
s.o.p(z.num);//8

        2)在多态中,静态(static)成员函数的特点:
          无论编译和运行,都参考左边。

8、需求:
        1)电脑运行实例:基于主板。
        2)数据库的操作:连接、操作(CRUD create read update delete)、关闭
       
   接口:降低了程序耦合性
   多态:增加的程序的扩展性

9、Object
    equals():比较的是地址

        如果自定义类中也有比较相同的功能,没有必要重新定义。
        只要沿袭父类中的功能,建立自己特有比较内容即可,这就是覆盖。

    .toString()相当于.getName+"@"+Integer.toHexString(hashcode())
 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2124次
    • 积分:253
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档