java只支持单继承,不支持多继承,但支持多层继承
1.子类的继承性
子类会继承父类除了private的成员变量和不是private的方法作为自己的方法,继承的访问权限不变。
子类只能继承父类的public和 protected成员变量,并且继承public和 protected方法,继承的成员变量或方法的访问权限不变,但子类无法继承父类的友好变量和友好方法。
2.子类对象 的 构造过程
当子类构造方法创建 一个子类对象时,子类的构造方法总是先调用父类的某个构造方法;如果子类的 构造方法没有明显的指明使用父类的哪个构造方法 ,子类就调用父类的不带参的 构造方法。
因为父类的private成员变量或方法无法被继承,所以我们可以调用父类中的部分方法,使这部分变量可以被操作。
3.成员变量的隐藏和方法重写
当子类中定义的成员变量和父类成员变量同名时,不必类型相同,子类就隐藏了继承的成员变量。(子类重新声明定义了这个变量)
子类想要使用被隐藏的方法,必须使用super来访问。
方法重写:子类中定义的一个方法,并且这个方法的名字、参数类型、返回类型、参数个数和从父类继承的方法完全相同。
重写方法时,不可以降低方法的访问权限。
4.关键字super
super的用法:
调用构造方法时,super必须是子类构造方法中的第一条语句。
5.final类和final方法(类不能被继承,方法不能被重写。)
java提供String类,它对编译器和解释器的运行都有很重要的作用,因此被修饰为final类。
6.上转型对象
定义:用父类来声明一个对象,用子类来为其初始化。
特点:
7.多态
多态的前提:
8.抽象
特点:
与abstract不能共存的关键字
private冲突(不能被继承)
final冲突(方法不能被重写)
static 无意义
9.开-闭原理
一个程序应该对扩展开放,对修改关闭。(面向抽象思想可以提现)
面向抽象核心思想:
10.接口(接口默认的是public和abstract)
接口的思想在于它可以增加很多类都需要实现的功能,使用相同的接口类不一定有继承关系。
单继承使得java简单、易于管理程序。为了克服单继承缺点(增加了子类的负担,使用不当会引起混乱),使用接口,一个类可以实现多个接口。
如果某个类实现某个接口,那么这个类必须实现接口的所有方法。
在声明接口时,如果使用public,则接口可以被任何一个类使用。但友好接口只能被同一包的类使用。
接口也可以被继承。
接口回调:是多态的另一种体现。(接口变量可以调用被类实现接口中的方法)
接口可以作为参数,就是把该类的实例的引用传值给该参数。
面向接口编程:接口只关心功能,不关心这些功能实现的具体细节。(符合程序的开-闭原理)
面试一问:接口和抽象类的异同?
11.内部类(成员内部类,局部内部类,匿名内部类)(不可以声明类变量和类方法)
局部内部类访问局部变量必须加final修饰。
外嵌类了一把内部声明对象作为外嵌类的成员。
匿名内部类:本质继承该类或者实现接口的子类匿名对象。
12.匿名类
匿名类可以继承类的方法,亦可以重写类的方法。
匿名类不可以声明static成员变量和方法。
12.异常(在java运行过程中出现的错误)
程序的异常Throwable
严重问题Error
异常类型:
jdk7特性:可以使用 "|" 将可能发生异常放在一起。
面试一问:throws和throw的区别?
throws:用在方法声明后,跟的是异常名,可以跟多个异常名,用逗号分开,表示抛出异常,由该方法的调用者处理。
表示异常出现的可能性,并不一定会发生异常。
throw:用在方法体中,跟的是异常对象名,只能抛出一个异常,由方法体内的语句处理。
一定是抛出了异常。
被finally控制的语句体,一定会执行。(如果finally之前强制退出jvm,则不会执行)
自定义异常:继承Exception或者继承RuntimeException。
13.泛型(泛型类,泛型方法,泛型接口)
定义:是一种把类型明确的工作推迟到了创建对象或代用方法的时候才去明确的特殊类型(参数化类型),把类型当做参数一样传递
主要目的:建立具有类型安全集合框架,类型安全的数据结构(链表、散列映射表)
好处:
使用范围:一般在集合中使用
泛型类型必须是引用类型
通配符:
泛型类型明确时,前后必须一致
面试一问:jdk5特性?