美文网首页
面向对象3

面向对象3

作者: 科学旅行者 | 来源:发表于2016-11-24 09:28 被阅读10次

参考资料:《Head First Java》

首先是一组代码:

import java.util.ArrayList;//导入ArrayList类;

class Dog1 {//Dog1类;
    private String name;//成员变量;
    
    public void bark() {//成员方法;
        System.out.println("bark");
    }
}

public class ObjectTest {//测试主类;
    public static void main(String[] args) {
        ArrayList<Dog1> dList = new ArrayList<>();//保存Dog1的ArrayList;
        Dog1 d = new Dog1();//新建一个Dog1;
        dList.add(d);//装到ArrayList中;
        Dog1 ad = dList.get(0);//将Dog1赋值给新的Dog1引用变量;
        ad.bark();
    }
}//结果输出bark;

但如果是下面的情况:

import java.util.ArrayList;

class Dog1 {
    private String name;
    
    public void bark() {
        System.out.println("bark");
    }
}

public class ObjectTest {
    public static void main(String[] args) {
        ArrayList<Object> dList = new ArrayList<>();
        Dog1 d = new Dog1();
        dList.add(d);
        Dog1 ad = dList.get(0);
        ad.bark();
    }
}//程序就会报错;
//Type mismatch: cannot convert from Object to Dog1;

我们知道在Java中的所有类都是从Object这个类继承出来,说白了,就是它是个“万用类”。
然而,在使用Object的多态引用时会有一个问题,比如上面的ArrayList<Object>,可以存Dog1的对象,但是调用get()方法取出来的对象就是Object类型,此时编译器已无法确认它是Dog1,因此就会报错。

任何从ArrayList<Object>取出的东西都会被当作Object类型的引用而不管它原来是什么。

相关文章

  • web-js-内置对象 面向对象

    内置对象 1、document 2、location 3、Math 面向对象 面向过程与面向对象编程 创建对象的方...

  • 8.面向对象基础

    1.什么是面向对象 2.应该如何学习面向对象 3.面向对象的思维方式 什么是面向对象 1.面向对象是一种编程方法;...

  • 面向对象

    面向对象有3大特性:封装、继承、多态1、介绍面向对象编程 面向对象编程(Object Oriented Progr...

  • python 高级 面向对象编程(OOP)

    面向对象有3大特性:封装、继承、多态 1、介绍面向对象编程 面向对象编程(Object Oriented Pro...

  • JS高级

    1.面向对象的概念 1.1什么是面向对象: 1 .面向对象是一种思维方法2.面向对象是一种编程方法3.面向对象并不...

  • 面向对象、设计原则、设计模式、编程规范、重构,这五者有何关系?

    面向对象 主流编程范式分为以下3种 面向对象 面向过程 函数式编程 面向对象需要掌握的7个知识点 面向对象四大特性...

  • js面对对象

    内置对象: 1、document 2、location 3、Math 面向过程与面向对象编程: 1、面向过程:所有...

  • Day05--面向对象

    理解面向对象 1、面向对象是相对面向过程而言2、面向对象和面向过程都是一种思想3、区别:面向过程强调的是功能行为;...

  • 面向对象3

    重写 继承后,子类可以拥有除父类继承的内容以外的其他的内容 1.关于方法1).在子类中可以直接添加其他的方法2)....

  • 面向对象3

    一、原型共享 二、闭包 三、命名空间 四、链式调用 五、访问属性的两种方法 六、对象枚举-各种方法

网友评论

      本文标题:面向对象3

      本文链接:https://www.haomeiwen.com/subject/oylbpttx.html