封装、继承、多态、抽象、访问修饰符、goto、clone
封装
把数据和操作数据的方法绑定起来,隐藏内部特性和行为,对数据的访问只能通过已定义的接口。
优点:
• 通过隐藏对象的属性来保护对象内部的状态。
• 提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。
• 禁止对象之间的不良交互提高模块化。
继承
继承是从已有类得到继承信息创建新类的过程。
优点:
•提高代码复用性
• 让变化中的软件系统有了一定的延续性
多态
多态性是指允许不同子类型的对象对同一消息作出不同的响应。
编译时多态:方法重载
运行时多态:方法重写
优点:
•提高代码复用性
抽象
抽象是将一类对象的共同特征总结出来构造类的过程,只关心对象有哪些属性和行为,并不关注这些行为的细节是什么。
抽象和接口的区别
• 接口中的方法都是抽象的;而抽象类则可以包含抽象和非抽象的方法。
• 类可以实现很多个接口,但是只能继承一个抽象类
• 类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,抽象类可以不实现抽象类声明的所有方法,可以在不提供接口方法实现的情况下实现接口。
•接口中只能有常量final,抽象类可以有常量、变量
• 接口中的成员函数默认是 public 的。抽象类的成员函数可以是 private,
protected 或者是 public。
• 接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含 main 方法的话是可以被调用的。
访问修饰符
goto
goto 和 const,是 Java 中的保留字,在目前版本的 Java 中没有使用(在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字)
& 和 && 的区别
两者都是and
&按位与:不管怎么都执行左右两边的程序
&&短路与:只有左边成立,才会执行右边的
clone
为什么要用clone?
一个对象的初始值来自另一个对象。
new一个对象和clone一个对象的区别?
new对象,先分配内存,在调用构造函数填充
clone对象,先分配内存,在从副本中复制
clone对象的使用?
【clone 方法执行的是浅拷贝(引用类型的复制地址)】
clone一个对象,则被clone的对象必要实现 Cloneable 接口,实现 clone方法。
--implements Cloneable
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
深拷贝【引用类型是重新创建一个,而不是复制地址】:
如果想要深拷贝一个对象,这个对象必须要实现 Cloneable 接口,实现 clone
方法,并且在 clone 方法内部,把该对象引用的其他对象也要 clone 一份。