Java基础
什么是面向对象?
面向对象是一种思想,将具体事务抽象成一个对象,这样的代码具有耦合性低,可复用性高,可读性好。
面向对象的特征
- 封装
给对象看作一个整体,隐藏内部细节,保护了数据,给外部提供一些方式去对对象内部做一些操作。
- 继承
给对象获得了从基类获取属性和方法的能力,提高了代码的复用性,可以在不修改基类类的情况下加强功能。本质是is-a的关系
- 多态
封装和继承最终归结于多态,两个类的继承关系,存在方法的重写,故可以在调用时有父类的引用指向子类的实现。多态的三要素:继承、重写、父类引用指向子类。
- 抽象
是把具体的实例抽离出核心特征的能力,要的是它所能实现的功能而不是具体细节。
面向对象和面向过程的区别?
面向过程的性能高于面向对象,面向对象需要实例化和加载一些运行资源,开销比较大。
面向过程不易维护和扩展,复用性也差。
面向对象的代码易复用、易扩展、易维护,并且面向对象的封装继承多态的特征,可以设计出低耦合的代码,使系统更加灵活。
面向对象的性能低于面向过程。
重载和重写的区别
重载要求方法名一致,参数类型、个数、顺序,至少要有一个不同。
重写要求方法名,参数列表,返回值,完全一致。
构造方法是什么?什么是构造方法的重载?什么是拷贝构造方法?
一、构造方法是什么
当实例化一个对象时,就会调用该对象的构造方法。如果没有指名构造方法,就会调用默认的无参构造,即使没有提供构造方法,Java编译器也会为这个类创建一个默认的构造方法。
二、构造方法的重载
构造方法重载和方法重载很相似。可以为一个类提供多个构造方法,每一个构造方法必须有他自己的唯一参数列表。
三、拷贝构造方法??
Java不支持像C++那样的拷贝构造方法,如果不自己写构造方法的化,Java不会默认创建拷贝构造方法。