Java复习知识点基础篇二
- int 和 Integer的区别,二者在进行 == 运算时 的结果
int是基本数据类型,Integer是引用数据类型,Integer是int类型的包装类。
二者在进行 == 运算时,Integer类型会进行自动拆箱操作转为int数据类型,然后进行判断,值相等为true,否则为false。 - 面向对象的三大基本特征
面向对象的三大基本特征是:封装、继承、多态。
封装是将类内部的实现细节隐藏起来,通过公有的方法暴露出类的具体功能。
继承是一种扩展机制,子类通过继承来获得父类的属性和方法。
多态是指子类对象可以直接赋值给父类变量,但运行时依然呈现出子类的行为特征,也就是说同一类型的对象在执行同一方法时会呈现出不同的行为特征。 - 封装的目的
- 隐藏具体的实现细节
- 使 使用者 只能通过预留的方法访问数据,从而在方法中加入控制逻辑,限制对类中成员变量的不合理访问
- 进行数据检查,维护对象信息的完整性
- 便于修改,提高代码可维护性
- 多态
多态是建立在继承下的,子类其实可以理解为一种特殊的父类,因此一个子类对象可以直接赋值给父类的引用变量,这被称为向上转型,这是由系统自动完成。
当一个子类对象直接给父类引用变量赋值时,其方法的行为总是表现为子类方法的行为,也就是说,相同的类型变量在调用同一个方法时,表现出不同的行为,这就是多态。
public class JavaDemo {
public static void main(String[] args) throws Exception {
Person person = new Student(); //将子类对象赋值给父类引用变量
person.sleep();
//结果呈现为子类的行为
//每天努力的学习完疲惫的睡···
}
}
class Person{
public void sleep(){
System.out.println("睡觉···");
}
}
class Student extends Person {
//重写父类方法
public void sleep() {
System.out.println("每天努力的学习完疲惫的睡···");
}
}
-
Java中多态是如何实现的
多态离不开继承,在设计程序时,可以将参数的类型定义为父类型。在调用程序时,可以根据实际情况,传入该父类型的某个子类型的实例以实现多态。
对于父类来说,可以有三种形式:普通类、抽象类、接口。
对于子类来说,要根据自身的特征,重写父类的某些方法,或实现抽象类或接口的某些抽象方法。 -
Java是单继承还是多继承
Java是单继承的,不允许多继承。Java中类只能有一个直接父类。
如果Java能够多继承,那么Java继承多个父类时,每个父类都包含相同的方法,那么子类在重写时就会造成迷惑。
Java其实可以间接实现多继承关系,也就是说,A类继承B类,B类又继承了C类,那么A类就间接继承了C类。这样也可以避免多继承时造成的迷惑行为。 -
重写与重载的区别
重载:在同一类中,方法之间的方法名相同,参数列表不同。
重写:在父类与子类中,子类的方法名和参数列表必须和父类相同.
注意:
- 重载与方法的返回类型和修饰符无关.
- 重写时,返回值要小于父类,抛出的异常要小于父类,方法修饰符要大于父类。父类中方法修饰符为private时,子类不能重写。
- Object类中的常用方法
- Class<?> getClass():返回该对象的运行时类
- String toString():返回对象的字符串表示
- boolean equals():判断对象与另一对象是否相等
- int hashCod():返回对象的hashCode值
- protected Object clone():帮助对象实现克隆
其实Object中还提供了wait(),notify(),notifyAll()方法用于控制线程的暂停和运行。