4月14日继承与多态

Posted qjwxlj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4月14日继承与多态相关的知识,希望对你有一定的参考价值。

所以说继承到派生类的基类成员初始化必须调用基类自己的构造函数,如果派生类无权调用基类的构造函数那么也就无法继承了。

还有要注意的是一个派生类无法继承基类的友元函数,就是说一个类以外的友元函数可以访问基类的私有变量但是无法访问继承基类的派生类的私有变量,

静态成员的继承:当一个派生类继承基类的静态变量后派生类也跟着具有管理这个静态变量的权力,不过他们管理的是同一个静态变量,也就是说继承系统中的静态成员变量从始至终只有一个,

菱形继承;一个派生类可以同时有多个基类,所以就会出现两个派生类继承同一个基类,而这两个派生类也可以同时做一个派生类的基类,那么最后这个派生类可能会存在两个相同的第一个基类的成员变量,数据就会变得有些冗余,也会出现当访问时不知道访问哪一个基类成员的二义性,所以菱形继承很复杂能不用就尽量不用,

比如Person作为一个总的基类,其有两个派生类分别是Student和Teacher,而这两个派生类又同时作为Assistant的基类,那么Assistant不仅继承了Teacher的name成员也继承了tudent的name成员,就造成了不必要的数据冗余和二义性,二义性的问题可以通过显示访问基类来解决,但是数据冗余就得通过其他方法来解决,

虚继承可以很好地解决这个问题,最后一个派生类继承到的同名成员会只显示最后那个,而中间两个基类的同名成员会显示一个指针,这个指针指向一个偏移量,然后指针通过这个偏移量来计算真正储存同名成员的地址。

而组合和继承都是类的复用,但是他们之间有着区别,组合的耦合度低,对基类的封装性保留比较完好,而继承对基类的封装有一定程度的破坏,所以视情况决定使用组合还是继承,比如将一台电脑举例子,联想电脑与电脑是继承的关系,而联想电脑与鼠标是组合的关系。

多态:一个派生类调用同一个基类函数,通过对这个函数的重写达到不同派生类使用函数有不同效果的操作,

多态的条件1:在继承中使用引用或指针调用的虚函数2.被调用的函数是虚函数且必须重写过,,这个跟重定义很像,但是重定义不是虚函数,多态调用的重写函数至于指针或引用的对象有关,若不满足多态则调用的函数与类型有关,协变,重写的虚拟函数的返回值可能与基类的有所不同,但是他也构成多态,

析构函数与多态的关系:若一个基类的指针指向一个他的派生类,那么想要析构这个对象就得delete这个指针,但是若不用多态来delete这个指针,那么析构函数就对按类型来调用基类的析构函数,从而导致派生类有一部分内存泄漏,而利用多态让基类的指针调用派生类的析构函数,就能达到完美释放空间的效果。

重写函数都是对同名函数的重写,但是有时候疏忽大意写错函数名而编译器不会报错,就很麻烦,所以在对需要重写的函数加override修饰,若是没有重写编译器会自动警告,提醒没有重写函数,final关键字表示函数或类不能够被继承,

抽象类:包含虚函数等于零的类也叫纯虚函数叫抽象类,他不能够被继承,它的作用是强制让派生类完成重写

有一个比较奇怪的地方,就是用菱形继承虚继承以后,若这个继承体系中包含虚函数就会报错,显示虚函数的不明确继承。可能是由于最后的派生类虚继承了两个需要重写的虚函数,所以当屏蔽一个虚函数后程序可以运行,但是被屏蔽的多态不能使用,

 

重磅来袭!java继承与多态的概念

前言

“金九银十”的秋招热潮已经开始了,经过7月8月这两个月的提前批,终于成功拿下了一些大厂的offer。小编经过这么多次的面试,这两天整理了一份面试清单分享给大家,希望能给大家一点帮助(java方向),觉得有帮助的同学可以转发点个赞哦~~
image.png

java基础

1.1java的8种基本数据类型装箱拆箱

1.2重写重载封装继承多态

1.3 Stack Queue

1.7 Concurrent包

1.8面向对象

1.9 String StringBuffer StringBuilder hashcode equ

1.10 java文件读取

1.11 Java反射

1.12 JDK NDK JRE JNI

1.13 static和final的区别

1.14 map, list, set区别

1.16 Session和COOKIE

1.19 10 NIO BIO AIO select epoll

1.20 ThreadLocal

1.22 finalize finalization finally

1.23 public private default protected

1.25 Object

1.26 equls和==的区别

1.27异常

1.28序列化

1.30 coparel口comorto1口

1.33接口和抽象类

1.34 Socket

1.35 Runtime类

1.36值传递与引用传递

1.37泛型?与的区别

1.38枚举类型字节码层面理解Enum

1.39 java注解类型

1.40字节流字符流

image

集合类Set

2.1 HashMap

2.2 CurrentHashMap

2.3 . Hashtable

2.4 hashtable和hashmap的区别

2.5 HashMap和ConCurrentHashMap区别

2.6 ConcurrentHashMap和HashTable区别

2.7 linkedHashMap

2.8 Linkedhashmap与hashmap的区别

2.9 HashSet

2.10 hashmap与hashset区别

2.11 Collections.sort内部原理

2.12 hash算法

2.13迭代器lterator Enumeration

2.14 LIST ArrayList, LinkedList和Vector的区别和实现原理

2.15快速失败(fail-fast)和安全失败(ail-safe)

image

锁volatile synchronized Lock ReentrantLock AQS C

3.1 .volatile和synchronized

3.2 CAS

3.3可重入锁ReentrantLock

3.3 ReentrantL ock和svnchronized区别

image

java多线程

4.1.如何创建线程?哪种好?

4.2.线程状态

4.3.一般线程和守护线程的区别

4.4. sleep wait yield notify notifyAll join

4.5中断线程

4.6多线程如何避免死锁

4,7多线程的好处以及问题

4.8多线程共用一个数据变量注意什么?

4.9线程通信方式

4.10线程池

4.11.线程中抛出异常怎么办

image

Java进阶ssh/ssm框架

Spring

Servlet

Struts

Hibernate

Redis

Tomcat

netty

Hadoop

Volley

image

Java 内存模型和垃圾回收

什么 是JMM内存模型? (JMM和内存区域划分不是一 -回事)

内存分区

GC算法(YGC and FGC)

垃圾收集器CMS

java类加载机制双亲委派

内存泄露

内存泄露的案例分析jvm调优

jstat jmap jps jinfo jconsole

JVM参数设置

内存分配与回收策略

面试问题

image

juc包

juc概况

Tools

List Set

Map

Queue

线程池

image

设计模式

什么是设计模式

常见的设计模式及其JDK中案例:

单例模式

设计模式六大原则

java动态代理

image

数据结构与算法

image

数据库

索引B树B+树

innoDB与MyISAM引擎区别

事务隔离级别(恶果:脏读幻读不可重复读)

数据库特性ACID

sql

5种连接left join. right join. inner join, full join

数据库范式

数据库连接池

DDL DML DCL

explain

分库分表

数据库****锁

其它问题

image

网络

HTTP

TCP UDP

计算机网络分层模型

IP

网络攻击

DNS浏览器中输入URL到页面加载的发生了什么

https ssl

image

image

操作系统

进程线程

死锁

同步异步阻塞非阻塞

操作系统CPU调度算法

内存管理方式(页存储段存储段页存储)

页面置换算法

IO种类IO的原理

进程打开同一个文件那么这两个进程得到的文件描述符(fd) 相同

select epoll

物理地址虚拟地址逻辑地址

image

image

Liunx命令、安全加密

image

部分内容展示

image

image.png

最后

做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。
当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。

更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务

如何获得这套优质的资料呢?

去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。

更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务

[外链图片转存中…(img-Hcaq7BDH-1624461062255)]

[外链图片转存中…(img-fT2FRCaG-1624461062255)]

[外链图片转存中…(img-V4soBomo-1624461062256)]

[外链图片转存中…(img-ke9oLp5W-1624461062257)]

如何获得这套优质的资料呢?

Java面试精选题、架构实战文档传送门:戳这里免费领取

以上是关于4月14日继承与多态的主要内容,如果未能解决你的问题,请参考以下文章

No2_3.接口继承多态_Java学习笔记_多态

4月21日java之继承的概述

重载与重写 -- 2018年1月29日11:21:54

2016年4月3日_JAVA学习笔记

2015年5月23日Java基础知识

2019年7月25日 类的继承 1