-
DOg dog2=(Dog)animal; 这个代码有什么作用,为什么要在中间加这个
Dog dog=new Dog();//用子类引用指向对象dogAnimal animal=dog;//用父类引用指向子类对象dog
Dog dog2=animal;//又将父类引用转化成子类引用,即用子类引用指向父类对象,该方式存在风险
Dog dog2=(Dog)animal;只是强制转换的一种方式
查看全部 -
那今天这个课程的类型转换,到底有什么用呢,或者在哪里会用到
当子类有的方法,父类中没有的时候,这时候就需要将父类转换为子类,这样就可以使用子类里有父类里没有的方法了。
查看全部 -
求解答Animal animal=new Dog()和Animal animal=dog的解释为什么一样
第一种写法是定义一个Dog类的对象,就是你说的父类引用指向子类对象,思想是多态。
第二种写法是定义Animal类的对象,并且把dog赋值给它。这里有一个隐藏的类型转换。可以分解成两句话实现,
Animal animal = new Animal();
animal = dog;
查看全部 -
Animal animal = dog;
animal是自定义的父类对象,把dog对象转换为Animal类对象,是向上类型转换
查看全部 -
方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。
一定要注意哦:由于方法内部类不能在"外部类的方法"以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。
查看全部 -
静态内部类是 static 修饰的内部类,这种内部类的特点是:
1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
查看全部 -
定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( )
1、 外部类是不能直接使用内部类的成员和方法滴
可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。
2、 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。如:
查看全部 -
在类中用大括号就是初始化块,执行顺序为静态初始化块->初始化块->构造方法,静态初始化块只在调用类的时候执行,只执行一次查看全部
-
Animal animal=dog;
把右边的Dog对象内存分配到左边Animal类型的animal上,所以向上查看全部 -
多态:继承时多态的实现基础。
引用多态
1)父类的引用可以指向本类的对象
eg.父类名 对象名1 = new 父类名();
2)父类的引用可以指向子类的对象
eg.父类名 对象名2 = new 子类名();
方法多态
通过父类的引用:
1)创建本类(父类)对象时,调用的方法为本类方法;
2)创建子类对象时,调用的方法为子类继承的或重写的方法;
注:不能通过父类的引用来调用子类的独有方法
查看全部 -
多态
概念:对象的多种形态
多态包括:
1引用的多态
父类的引用可以指向本类的对象
父类的引用可以指向子类的对象
但是子类的引用不能指向父类的对象
继承是多态的基础
2方法的多态
创建本类对象时,调用的方法时本类的方法.
创建子类对象时,调用的方法为子类重写的方法或者继承的方法.
查看全部 -
多态:对象的多种形态,分为两种:1、引用多态 2、方法多态
1、引用的多态:父类的引用可以指向本类的对象;父类的引用可以指向子类的对象。注意:子类的引用不能指向父类的对象。
2、创建本类对象时,调用的方法为本类方法;创建子类对象时,调用的方法为子类重写的方法或者 继承的方法。注意:1、同样都是父类的引用但是指向不同对象调用方法时调用的时不同的方法。2、在父类引用指向子类时,子类没有调用的方法时调用的时子类从父类中继承过来的方法。
注意:在方法的引用中,当需要调用的方法是子类独有的方法时,是不能使用父类来进行引用然后指向子类对象的。
查看全部 -
没有重写toString方法的情况下直接用print打印对象,输出的是是对象的地址!
查看全部 -
equals()方法比较的是对象的引用是否指向同一个地址,在类名 对象名=new 类名()时,每new一次会开辟一个新的内存地址,每次的并不相同
equals语句返回值是布尔型,通常与if配合使用
【当new一个类的时候得到的对象是类的对象,如果这个对象调用getClass()方法得到的是类对象//类对象关注的是类的代码信息,即类的属性名,方法名等,类的对象关注的是类的数据信息,即具体值】
如果要用变量名即对象名来判断两个对象名中的属性值是否相等时,则要改写equals()方法,【通过resource中查找】【引用格式 对象名.equals(另一个对象名)】使其达到目标在eclipse用Source选项中的功能可以快速生成重写equals方法
查看全部 -
equals()----返回值是布尔类型 比较的是对象的引用是否指向同一块内存地址-------对象实例化时,即给对象分配内存空间 使用方法如:dog.equals(dog2); 如果是两个对象,但想判断两个对象的属性是否相同,则重写equals()方法 1.地址是否相同----if (this == obj) 2.对象是否为空----if (obj == null) 3.getClass()可以得到类对象,判断类型是否一样-----if (getClass() != obj.getClass()) new出来的是类的对象,关注的是类的属性的具体的数据; 类对象是类的代码信息,关注的是类有什么属性和方法 4.属性值是否一样----if (age != other.age)
查看全部
举报