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

Posted now just do it

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于面向对象中的面试问题的总结相关的知识,希望对你有一定的参考价值。

一、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.不管是抽象类还是接口,都可以向上转型和进行运行时绑定(多态)。

四、顺序表和链表

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

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

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

以上是关于对于面向对象中的面试问题的总结的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段9——JS中的面向对象编程

Java面试题总结

面向面试编程代码片段之GC

《数据结构与面向对象程序设计》第三周学习总结

面试总结之谈谈你对面向对象的理解

Java 大厂面试必刷题 Day1:何为面向对象编程的思想?面向对象三大特征是什么?