什么是方法重载和方法重写,有什么异同?
方法重载发生在同一个类中,同名不同参的方法;
方法重写是子类重写父类的方法,同名同参;
两者区别:语法区别,重载要求同名不同参,与访问修饰符 、返回类型、异常无关;
重写要求同名同参、访问修饰符必须大于等于父类,返回类型要一致(基本数据类型必须相同),子类 抛出的异常必须是父类异常的子类或子集!
抽象类和接口有什么异同?
语法上:抽象类有构造方法、属性、方法、可以包含零个或多个抽象方法;
接口则无构造方法,所有属性都是静态常量、所有方法都是抽象方法(JDK1.8可以有默认和静态方法);
设计理念上:抽象类代表的是子类是什么,是is-a的关系,接口代表的是子类能做什么,是一种约束和能力体现,是can-do的关系。
异常有哪三种类型,怎么自定义异常?
有运行时异常(runtime exception)、检查异常(checkedexceptions)、错误(error)
自定义异常:继承Exception 或者Exception 的子类,定义有参构造方法,在需要的地方throw异 常。
什么是多态?使用多态的两个前提条件?有哪两种表现形式和应用场合?
多态:一个事务在不同的条件下,产生不同的结果。
两个条件:要满足继承和重写。
表现形式:重载和重写。
应用场合:方法形参,方法返回值类型。
什么是内部类?内部类有哪几种?有什么优缺点?
定义在类内部的类,其他细节和普通类一致称为内部类;
内部类有四种:1.成员内部类 2.方法内部类 3.静态嵌套类 4.匿名内部类
优点:1.隐藏了具体实现和细节;2.减少了类文件的数量 3.避免传参,简化业务逻辑
缺点:使程序结构变得更复杂,不易维护;
什么是构造方法,有什么作用,如何调用本类和父类的构造方法?
1.方法名和类名一致,且无返回类型的方法称为构造方法;
2.构造方法用于对类的成员变量进行初始化;
3.通过“this()”方法调用本类的构造方法,通过"super()"方法调用父类的构造方法;必须写在第一 行;
final、finally、finalize有什么异同?
final用于声明属性,方法和类,分别表示属性不可变,方法不可重写,类不可继承;
finally是异常处理结构的一部分,表示总是执行,除了System.exit(0);
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的该方法。
类和类之间有哪几种关系?面向对象设计原则有哪些?
类与类之间有:继承,实现,依赖,关联,聚合,组合关系;
设计原则:
1.依赖倒置原则 DIP (Dependence Inversion Principle)
概念: A.高层模块不应该依赖与底层模块,两个都应该依赖抽象;
B.抽象不应该依赖细节,细节应该依赖抽象。
2.迪米特法则 LOD(Law of Demeter)
概念: 如果两个类不必彼此直接通信,那么两个类就不应当发生直接的相互作用。
3.接口隔离原则 ISP(Interface Segregation Principle )
概念: 使用多个专门的接口,而不要使用单一的总接口,即客户端不应该依赖那些它不需要的 接口。
4.聚合/组合原则 CARP (Composite/Aggregation Reuse Principle)
概念: 尽量使用聚合/组合,尽量不使用继承。
5.里氏替换原则 LSP (Liskov Substitution Principle)
概念: 子类型必须能够替换他们的父类型。
6.开闭原则 OCP ( Open Closed Principle)
概念: 软件实体应该可以扩展,但不可修改。
7.单一职能原则 SRP(Single Responsibility Principle)
概念:就一个类而言,应该仅有一个引起它变化的原因;
设计模式分哪几类?共有多少种?
分三大类,创建模式(五种):负责对象创建;结构模式(七种):处理类与对象之间的组合;
行为模式(十一种):类与对象交互中的职责分配;