构造方法有哪些特点?是否可被 override?
- 方法名与类名相同。
- 没有返回值,但是不能用void声明构造函数
- 生成类的对象时,自动执行。
- 不能被override但是可以重载。
面向对象三大特性
- 封装:把一个对象的属性隐藏在对象内部,,不允许外部对象直接访问对象的内部信息,但是会提供一下可以被外界访问的方法来操作属性。
- 继承:
- 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的中的私有属性和方法,子类无法访问,只是拥有。
- 子类可以拥有自己的属性和方法,即子类可以对父类进行拓展。
- 子类可以用自己的方法事项父类的方法。
- 多态
- 对象类型和引用类型之间具有继承(类)/实现(接口)的关系。
- 引用类型变量发出的方法调用的 到底是哪个类的方法,必须在程序 运行期间才能确定。
- 多态不能调用,只在子类存在但在父类不存在的方法。
- 如果子类重写了父类的方法,真正执行的是子类 覆盖的方法,如果子类没有覆盖父类的方法,执行的是父类的方法。
接口和抽象类有什么相同和不同
- 共同点:
- 都不能被实例化
- 都可以包含抽象方法
- 都有可以默认实现的方法
- 不同
- 接口主要对垒 的行为 进行约束 ,你实现了某个接口就具有了对应的行为。抽象类主要用于代码复用,强调所属关系。
- 一个类只能拥有一个父类,但是 可以实现多个接口
- 接口中的成员变量只能是 public static final 类型的,不能被修改且必须有初始值,而抽象类的成员变量默认default,可在子类中被重新定义,也可被重新赋值。
深拷贝和浅拷贝,引用拷贝
- 浅拷贝:会在堆上创建一个新的对象,如果原对象内部的属性是引用类型,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和元对象公用同一个内部对象。
- 深拷贝:完全复制整个对象,包括这个对象所包含的内部对象。
- 引用拷贝:两个不同的引用指向同一个对象。