你可以先自测的问下自己,下面这些你都能回答的很清楚吗!!!下面我会用最精简的答案告诉你。
1、什么是类?什么是对象?
2、什么是继承?什么是聚合?
3、什么是向上转型?
4、什么是抽象类?
5、什么是接口?什么是多态(动态绑定)?
6、抽象类和接口有什么区别?不单单是语法层面,主要是什么时候使用接口,什么时候使用抽象类?
7、面向对象编程时如何思考?
8、Java中到底有没有多继承?
---------------------------------------------------------------------------------------------------------------
一、什么是类?什么是对象?
类可以看成一类对象的模板,对象可以看成该类的具体实例。
二、什么是继承?什么是聚合?
继承:
表示一般和特殊的关系,XX是一种XX,Is—A。
聚合:
表示整体和部分的关系,XX是XX的一部分,聚集是Has-A,组合是Contains-A。
聚集是一种强力形式的关联,表示了部件/整体关系,例如球队(整体)具有队长和队员(部件)。 队员(部件)可以具有自己的生命周期,并不必然随着球队(整体)的创造和销毁而产生和消亡。
组合是更强力形式的聚集,其中head、body、limb(部件)会嵌入person(整体)的内部,并且随着其创建和销毁而产生和消亡。
聚集和组合的区别在于:聚集关系是“has-a”关系,组合关系是“contains-a”关系;聚集关系表示整体与部分的关系比较弱,而组合比较强;聚集关系中代表部分事物的对象与代表聚集事物的对象的生存期无关,一旦删除了聚集对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。
组合和聚集是有很大区别的,这个区别不是在形式上,而是在本质上:比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),这种情况叫做组合,反之b所指向的对象还会有另外的引用指向它,这种情况叫聚集。在实际写代码时组合方式一般会这样写:A类的构造方法里创建B类的对象,也就是说,当A类的一个对象产生时,B类的对象随之产生,当A类的这个对象消亡时,它所包含的B类的对象也随之消亡。聚集方式则是这样:A类的对象在创建时不会立即创建B类的对象,而是等待一个外界的对象传给它,传给它的这个对象不是A类创建的。
三、什么是向上转型?
Father f = new Son();
四、什么是抽象类?
五、什么是接口?什么是多态(动态绑定)?
接口:
表示一种实现关系。
多态:
同一行为具有不同的表现方式。
实现多态必须具备的三个条件:
六、抽象类和接口的区别?
上面这些是我从别的地找的,但是只了解这些就够了吗,重点在于下面是我最想说的:
接口和抽象类本质上的区别:
举个简单的例子,飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将 飞行 这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将 飞行 设计为一个接口Fly,包含方法fly( ),然后Airplane和Bird分别根据自己的需要实现Fly这个接口。然后至于有不同种类的飞机,比如战斗机、民用飞机等直接继承Airplane即可,对于鸟也是类似的,不同种类的鸟直接继承Bird类即可。从这里可以看出,继承是一个 "是不是"的关系,而 接口 实现则是 "有没有"的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系,比如鸟是否能飞(或者是否具备飞行这个特点),能飞行则可以实现这个接口,不能飞行就不实现这个接口。
七、面向对象编程时如何思考?
用面向对象编程时:
八、Java中到底有没有多继承?
内部类:
内部类分类:
普通内部类(成员内部类)
局部内部类
匿名内部类
嵌套内部类(静态内部类)
最后,欢迎扫码加入星球《极客e家》,星球里,大咖云集,我们将一起打造极客文化。在这里,您将体会到:
【科技动态】:我们聚焦软件技术发展趋势和行业最新动态,尤其ChatGPT这波的AI风向标,让您轻松掌握一手科技资讯。
【共同成长】:除了传统的【系列课程 & 面试】栏目之外,我们还将分享优质的技术文章和工具等,还有更多来自星主和各个小伙伴的原创学习资料,让您的技术更上一层楼,生产性更进一步提高,我们还提供技术交流和问答平台,更有针对性的解决您的问题。
【小白逆袭】:如果您是刚入行或工作不久的软件小白,在这里,您将在极客文化的熏陶中,引领您走向技术大牛之路。
【技术面试】:我们也会分享一些技术面试的重点和常问的技术问题。
【行业资讯】:分享和探讨最新行业资讯,尤其是星主所在城市(大连)的软件行业动态和技术趋势。
更多精彩内容,期待您在星球中探索。