java多态笔记
1、当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
2、intanceof关键字用法:对象 intanceof 类;判断该对象是不是该类的实例;
3、抽象类不能直接被实例化,只有继承它的类才能被实例化;而且抽象类不能被finally关键字修饰,被finally关键字修饰后不能被继承,这与抽象类的作用相矛盾
4,抽象方法没有{}
5、java实例化:原文链接:https://blog.csdn.net/qq_43553938/article/details/83587291
Demo demo = new Demo();
通常把这条语句的动作称之为创建一个对象,也就是实例化,其实,它包含了四个动作。
1)右边的“new Demo”,是以Demo类为模板,在堆空间里创建一个Demo类对象(也简称为Demo对象)。
2)末尾的()意味着,在对象创建后,立即调用Demo类的构造函数,对刚生成的对象进行初始化。构造函数是肯定有的。如果你没写,Java会给你补上一个默认的构造函数。
3)左边的“Demo demo”创建了一个Demo 类引用变量。所谓Demo类引用,就是以后可以用来指向Demo对象的对象引用。
4)“=”操作符使对象引用指向刚创建的那个Demo对象。
6为什么我们要向上转型:
当我们需要多个同父的对象调用某个方法时,通过向上转换后,则可以确定参数的统一.方便程序设计
class A {
public void print() {
System.out.println("A:print");
}
}
class B extends A {
public void print() {
System.out.println("B:print");
}
}
class C extends B {
public void print() {
System.out.println("C:print");
}
}
public class Test{
public static void func(A a)
{
a.print();
}
public static void main(String args[])
{
func(new B()); //等价于 A a =new B();
func(new C()); //等价于 C c =new C();
}
}
7、a intanceof b ,判断a引用是否指向了b类的实例对象
8 向下转型 则是为了,通过父类强制转换为子类,从而来调用子类独有的方法;