面试攻略,Java 基础面试 100 问(一)

面向对象的特征有哪些方面?

抽象(Encapsulation):封装的目的是为了保证变量的安全性,使用者不必在意具体实现细节,而只是通过外部接口即可访问类的成员 如果不进行封装,类中的实例变量可以直接查看和修改,可能给整个代码带来不好的影响 因此在编写类时一般将成员变量私有化,外部类需要同getter和setter方法来查看和设置变量。

继承(Inherit):继承实际上也是为了提高代码的复用性和可扩展性,在定义不同类的时候存在一些相同属性,为了方便使用可以将这些共同属性抽象成一个父类,在定义其他子类时可以继承自该父类,减少代码的重复定义,子类可以使用父类中非私有的成员。

继承中需要注意:

  • 父类可以不知道他有哪些子类,但是子类必须明确他有哪些父类

  • 子类在重写父类时,如果想在父类功能基础上增加新的功能,可以用super实现

  • 不能作为继承的子类:

    • 存取控制

    • 使用final修饰符,防止父类方法被重写一般就是添加final修饰符

    • 只有private构造方法

  • 子类的参数的个数和类型要和父类完全一致,返回类型要兼容

  • 子类中方法的存取权限只能改为更低,不能高于父类中方法的存取权限 (里氏代换原则)

封装:封装是把一个对象的属性私有化,隐藏内部的实现细节,同时提供一些可以被外界访问属性的方法。通过封装可以使程序便于使用,提高复用性和安全性。

多态(Polymorphism):是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

多态的3要点:

  • 1.多态是方法的多态,不是属性的多态(多态与属性无关)

  • 2.多态的存在有三个必要条件:继承,方法重写,父类引用指向子类对象。

  • 3.父类引用指向子类对象后,用该父类引用调用子类重写方法,此时多态就出现了。

多态性分为编译时的多态性和运行时的多态性。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。

重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?

方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。

重载(overload):发生在同一个类中,方法名相同参数列表不同(参数类型不同、个数不同、顺序不同),与方法返回值和访问修饰符无关,即重载的方法不能根据返回类型进行区分

重写(override):发生在父子类中,方法名、参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类(里氏代换原则);如果父类方法访问修饰符为private则子类中就不是重写。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值