美文网首页
Java基础之面向对象

Java基础之面向对象

作者: KD小帅 | 来源:发表于2018-11-15 16:56 被阅读0次

1.多态,继承,封装

Java实现多态有哪些必要条件?具体怎么实现?多态的实现原理?多态的作用?

答:多态的优点

1. 消除类型之间的耦合关系

2. 可替换性

3. 可扩充性

4. 接口性

5. 灵活性

6. 简化性

多态存在的三个必要条件

1.继承

2.重写

3.父类引用指向子类对象

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

重载(overloading)与重写(override)的区别? 

答:重载体现了java编译时的多态性,覆写体现为运行时的多态性

重载(overloading):一般用于在类中实现若干重载的方法,方法名相同而参数形式不同,以下是重载的规则:

使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型指参数类型、参数个数、不同的参数顺序。

不能通过访问权限、返回类型、抛出的异常进行重载,原因:因为当在调用时不能指定类信息(权限和返回值等等),编译器不知道你调用了哪个重载方法,这也是某一年名企华为的面试题。

方法的异常类型和数目不会对重载造成影响。

重写(override):在继承和实现接口中应用的比较多,有如下几个规则:

重写的方法除了访问权限不一致之外,其他的必须一致

重写的参数列表必须完全与被重写的方法相同,否则不能称其为重写。

重写方法的访问修饰符一定要大于被重写方法访问修饰符(public>protected>default>private)。

重写方法的返回值必须和被重写方法的返回值一致。

重写方法所抛出的异常必须和被重写方法所抛出的异常一致,或者是其子类关系。

被重写方法不能为private,否则在其子类只是定义了一个新方法,并没有对其进行重写。

重写的记忆方法:只有实现的功能代码不一致,其他的(函数名、参数列表、返回值类型)都必须一致。

补:当父类功能无法满足子类的功能需求时使用继承方式进行重写,实现接口的类中方法亦叫重写。

Java 中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

答:构造函数是类的对象在创建的时候会调用的函数。如果程序员没有设置构造函数,也系统会为该对象提供一个默认的构造函数。构造函数的重载和方法的重载类似,可以为构造函数提供多个参数表,每一个对应的构造函数有其唯一匹配的参数表。  java中不支持构造函数的复制。构造函数的复制属于C++的内容。

2.其他

接口和抽象类有什么区别?为什么要这样设计?‘

答:接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

2、抽象类要被子类继承,接口要被类实现。

3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现

4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

6、抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果

7、抽象类里可以没有抽象方法

8、如果一个类里有抽象方法,那么这个类只能是抽象类

9、抽象方法要被实现,所以不能是静态的,也不能是私有的。

10、接口可继承接口,并可多继承接口,但类只能单根继承。

相关文章

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

  • java SE目录

    java SE目录 java基础(一)java基础(二)关键字面向对象(一)面向对象(二)面向对象(三)集合(一)...

  • Java 基础学习笔记

    Java 基础之 面向对象六大原则 Java 基础之 重写和重载的区别和各自使用 Java 基础之巧用Object...

  • Java基础03面向对象

    Java 基础02Java编程基础 面向对象上 面向对象的概述 面向对象的概述:面向对象是一种符号人类思维习惯的编...

  • 【知识详解】JAVA基础(秋招总结)

    JAVA基础 目录 JAVA基础 问:面向过程(POP)和面向对象(OOP)? 问:Python和Java的区别?...

  • Java 基础

    Java 基础01Java开发入门 Java 基础02Java编程基础 Java 基础03面向对象 Java 基础...

  • 从事Android以来的相关总结1-JAVA技能

    ☆JAVA技能 «有良好的JAVA基础,熟练掌握面向对象思想: 理解面向对象: 面向对象是一种思想,是基于面向过程...

  • 面向对象

    title:面向对象tags: 基础,Java 面向对象 面向对象程序设计简介 面向对象的基本思想是使用类、对象、...

  • java基础之---面向对象

    前言 最近又闲下来了,无意间在其他博客看见几篇java基础的文章,发现自己好多都忘记了。趁有时间就自己再回顾复习一...

  • 厉害!蚂蚁金服面试官整理的“基础-中级-高级”Java程序员面试

    Java基础(对象+线程+字符+接口+变量+异常+方法) 面向对象和面向过程的区别? Java 语言有哪些特点? ...

网友评论

      本文标题:Java基础之面向对象

      本文链接:https://www.haomeiwen.com/subject/lwsyfqtx.html