Java高频面试题(面向对象)
面向对象
2.1 类与对象的区别
类是一类事物的整体描述,是一个模板,是对象的抽象,是具有相同行为和特征的对象的描述
对象具体的一个事物,是类的实例化,万事万物皆对象
2.2 面向对象的特征是什么?
面向对象的三大特征是:封装、继承、多态
封装:是将类的实现细节以及属性进行封装,也就是私有化,之对外提供特定的方法来进行对象的调用、初始化、赋值。因为外界无法知道其具体细节,所以保证 了代码的安全性。
继承:继承是子类使用extends关键字来继承父类,子类可以继承使用父类的非私有化的属性和方法(也就是非private关键字修饰的),提高了代码的复用性,如 果父类所提供的属性与方法难以满足子类的使用情景,那么子类在不修改父类的情况下可以自己定义,提高了代码的灵活性。
多态:同一种行为对不同事物会展现出不同的表现,也就是说同一个方法在不同子类中有不同的实现,提高了代码的扩展性,对于类来说多态就是向上转型与向下 转型。对于方法来说,就是重写与重载。
2.3 public private protected default(默认)的区别
public:在任何地方都可以被调用
protected:在子类、同包、同类都可以被调用
default:在同包、同类都可以被调用
private:在同类下可以被调用
2.4 方法的重写与重载有什么去呗
方法的重载
在同一个类中,方法名相同,参数列表不同(参数的顺序、参数的个数、参数的属性),与其他因素无关。
方法的重写
重写是存在与子父类中,当父类所提供的方法不适合子类所使用的情况,子类可以将父类的此方法进行重写
重写存在父子类,方法名、参数列表相同,方法返回类型只能为父类该方法返回值的本类或子类,抛出异常类型只能为父类该方法返回值的本类或子类,但是注意子类重写的权限修饰符要大于父类方法的权限符。
2.5 什么是构造函数
构造函数简单来说就是进行类初始化的函数,构造函数没有返回值(也没有void),构造函数是我们在new一个对象的实例化类时自动调用的。在每一个类都会有一个构造函数,当我们没有明确声明构造函数的时候,类默认为无参构造器,但是当我们声明构造函数之后,默认的无参构造器就会失效。一个类可以重载任意个构造函数(只要符合重载定义就可以),但是重载是无法被继承的。
2.6 this和super有什么区别
this
this关键字就是代表当前类的引用,我们可以使用this来调用本类的其他构造器,但是this所调用的构造器必须放在首行。this也可以调用本类的属性,当方法中形参与本类属性重名之后就可以使用this.属性来进行区分。如果通过this调