对于面向对象中的面试问题的总结
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.不管是抽象类还是接口,都可以向上转型和进行运行时绑定(多态)。
四、顺序表和链表
顺序表的底层实现是数组、链表的底层是链表。
对于顺序表更适合搜索、查找和替换
对于链表更适合增加、删除
以上是关于对于面向对象中的面试问题的总结的主要内容,如果未能解决你的问题,请参考以下文章