java 关于继承的一些重要知识点(面试易考点)

以下是本人整理的一些继承和多态方面的重要知识点,也算是面试的易考点,在此整理方便日后复习!

super关键字:

1.只能在构造方法或实例方法内使用super关键字,而在静态方法和静
态代码块内不能使用super关键字

2.如果父类中的成员变量和方法被定义为private类型,那么子类永远

无法访问它们,如果试图采用super.var的形式去访问父类的private
类型的var变量,就会导致编译错误

abstract关键字:

1.一个类中有抽象方法,这个类必须是抽象类
2. 抽象类中可以没有抽象方法

接口的特征:

1.接口中只能包含public、static、final类型的成员变量和public、abstract

类型的成员方法。
2. 接口中不能有非抽象方法

比如:

public interface A{
int var; //编译出错
void method1(){System.out.println("method1");} //编译出错
protected void method2(); //编译出错
static void method3(){System.out.println("method3");} //编译出错
}

多态性:

1. Java中的许多对象(一般都是具有父子类关系的父类对象)
在运行时都会出现两种类型:
◦ 编译时类型和运行时类型,例如:
◦ Person person = new Student();
◦ 这行代码将会生成一个person变量,该变量的编译时类型是
Person,运行时类型是Student。

2.如果把引用变量转换为子类类型,称为向下转型,如果把
引用变量转换为父类类型,称为向上转型。

Animal animal=new Dog();//向上转型
Dog dog=(Dog)animal; //向下转型,把Animal类型转换为Dog类型

3.最难理解和记忆的一部分!!!!!

在运行时环境中,通过引用类型变量来访问所引用对象
的方法和属性时,Java虚拟机采用以下绑定规则
◦ 1. 实例方法与引用变量实际引用的对象的方法绑定,这种绑定
属于动态绑定,因为是在运行时由Java虚拟机动态决定的。


◦ 2. 静态方法与引用变量所声明的类型的方法绑定,这种绑定属
于静态绑定,因为实际上是在编译阶段就已经做了绑定。


◦ 3. 成员变量(包括静态变量和实例变量)与引用变量所声明的
类型的成员变量绑定,这种绑定属于静态绑定,因为实际上是
在编译阶段就已经做了绑定。

class Base{
String var="BaseVar";
static String staticVar="StaticBaseVar";
void method(){
System.out.println("Base method");
}
static void staticMethod(){
System.out.println("Static Base
method");
}
}
public class Sub extends Base{
String var="SubVar"; //实例变量
static String staticVar="StaticSubVar"; //静态变量
void method(){ //覆盖父类的method()方法
System.out.println("Sub method");
}
static void staticMethod(){ //隐藏父类的staticMethod()方法
System.out.println("Static Submethod");
}

String subVar="Var only belonging to Sub";
void subMethod(){
System.out.println("Method only
belonging to Sub");
}
public static void main(String args[]){
Base who=new Sub(); //who被声明为Base类型,引用Sub实例
System.out.println("who.var="+who.var);//打印Base类的var变量(属于绑定中的第三条,静态绑定!)
System.out.println("who.staticVar="+who.staticVar); //打印Base类的staticVar变量(属于绑定中的第三条,静态绑定!)
who.method(); //打印Sub实例的method()方法(属于绑定中的第一条,动态绑定!)
who.staticMethod(); //打印Base类的staticMethod()方法(属于绑定中的第二条,静态绑定!)
}
}

4.任何子类都要先执行父类中的构造函数,再执行自己的构造函数!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值