对于面向对象中的面试问题的总结

一、super和this的区别

1.1、super关键字

super表示的是对于父类实例的应用。

(1.使用super调用父类的构造器

class Animal {
    public String name;
    public Animal(String name){
        this.name=name;
    }
}
class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }
}

(2.使用super调用父类的方法

class Animal {
    public String name;
    public Animal(String name){
        this.name=name;
    }
    public void eat(String name){
        System.out.println(this.name+"正在吃东西");
    }
}
class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }

    public void eat(String name) {
        super.eat(name);
    }
}

 1.2 this关键字

this表示的是对于本类实例的应用

初始化:

    public Animal(String name){
        this.name=name;
    }

 对成员属性的调用:

    public void eat(String name){
        System.out.println(this.name+"正在吃东西");
        System.out.println(this.name);
    }

 调用方法:

    public void eat(String name){
        System.out.println(this.name+"正在吃东西");
        System.out.println(this.name);
    }
    public void mean(){
        this.eat(name);
    }

区别:

this访问的是本类中的属性和方法、先查找本类,如果本类没有就调用父类、表示当前对象。

spuer是由子类访问父类中的属性和方法、并查找本类直接调用父类。

二、重写和重载的区别

重写:(Override)

1.重写的方法名相同。

2.方法的参数列表相同。

3.方法的返回值相同。

重载:(Overloading)(不一定发生在一个类中,比如说继承可以在子类中实现)

1.重载的方法名相同。

2.方法的参数列表不相同(数据的个数和数据的类型)。

3.方法的返回值不做要求。

三、抽象类和接口的区别

抽象类:由abstract来修饰

接口:由interface来修饰

1.在抽象类中可以定义成员属性和成员方法,而在接口中方法只能是抽象方法(在jdk1.8之后可以通过default来应用普通方法,接口中方法默认pubilc abstract,成员属性默认pubilc static final)。

2.接口和抽象类都不能被实例化。

3.接口和抽象类都是为了被继承(抽象类的抽象方法不能被final和private修饰,接口中类和接口使用implements,接口和接口中间用extends来继承)。

4.类调用抽象类用extends调用,当A抽象类调用B抽象类,类调用时要实现所有的抽象方法。

类可以通过implements来调用接口,类可以继承多个接口,调用时用逗号隔开,调用时也要实现所有抽象方法。

5.不管是抽象类还是接口,都可以向上转型和进行运行时绑定(多态)。

四、顺序表和链表

顺序表的底层实现是数组、链表的底层是链表。

对于顺序表更适合搜索、查找和替换

对于链表更适合增加、删除

你可能感兴趣的:(笔记,面试,vue.js,node.js)