飞道的博客

JAVA面试知识点

422人阅读  评论(0)

jdk包含->jre->jvm

父子类加载进入内存:

父类和子类加载进内存过程:
1.父类和子类静态加载进内存
2.父类属性和方法加载进内存然后执行父类构造方法,加载完成属性后,再进行构造,构造完父类之后再加载子类属性和方法,然后执行子类构造。

多态性的前提是继承,继承是多态的前提。
多态使用前提:
1.继承,方法重写
多态的类,会使用子类特有的方法,别的都是父类的。多态的目的也就是去使用子类特有的方法,别的都是父类的,不然你直接弄个父类不完了。
多态时候,无法使用子类特有方法,只能使用子类重写父类的方法。

多态强调一下,本质还是父类,栈中还是父类
多态相当于一个东西向下转型,是不是,本质就是一个转型,转型时候,自己特有的东西会被遗忘,所以子类特有的方法,在多态中,无法使用,能使用的只是父类的方法上父类重被重写的方法么,
说白了,多态本质还是一个父类对象,只是调用了一些被子类重写的方法,有点洋务运动的味道了。中学为体,西学为用。

多态

1.没有继承就没有多态

2.代码的体现:父类类型的指针指向子类对象

3.好处:如果函数\方法参数使用的是父类对象,可以传入父类、子类对象

4.局限性:

1》父类类型的变量,不能直接调用子类特有的方法,必须强转为子类类型变量后,才能直接调用子类特有的方法

Animal *aa = [Cat new]; // Animal是父类 Cat是子类

Cat *dd = (Cat *)aa; // 强制转换为子类

[dd run]; // run是子类Cat特有的方法

因为本质,还是个父类,想使用也可以,比如下转型,将本质是父类的东西,转型成子类。
父类是float,子类是double.
double ->float,必然丢掉double本质的一些东西
但是float(父类)->double,不但能保持自己,还能得到一些东西。
不要忘记父类->子类用到词是extends,本质是扩展,子类会比父类更有见识,范围更大,所以多态这东西,就像清朝晚年一样,看上去搞了新东西,extends了一下,实际上本质还是那么一些东西。
java的八股文。

http://www.cyc2018.xyz/#%E7%AE%97%E6%B3%95


转载:https://blog.csdn.net/qq_40707269/article/details/116329287
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场