`

java面试题解惑 之 继承、多态、重载、重写

阅读更多
继承、多态、重载、重写
继承
java中有三种类:类,抽象类,接口,他们的继承关系是:
1,类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。
2, 抽象类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。
3, 接口只能继承(extends)接口。

继承的约束:
1. 类和抽象类都只能最多继承一个类,或者最多继承一个抽象类,并且这两种情况是互
斥的,也就是说它们要么继承一个类,要么继承一个抽象类。
2. 类、抽象类和接口在继承接口时,不受数量的约束,理论上可以继承无限多个接口。
当然,对于类来说,它必须实现它所继承的所有接口中定义的全部方法。
3. 抽象类继承抽象类,或者实现接口时,可以部分、全部或者完全不实现父类抽象类的
抽象(abstract)方法,或者父类接口中定义的接口。
4. 类继承抽象类,或者实现接口时,必须全部实现父类抽象类的全部抽象(abstract)方
法,或者父类接口中定义的全部接口。

继承可以实现类的复用,除了继承,采用组合方式也可以实现类的复用。
所谓组合就是把原有类定义为新类的一个属性,通过在新类中调用原有类的方法来实现复用
public class Sub {
private Parent p = new Parent();
public void doSomething() {
// 复用Parent类的方法
p.method();
// other code
}
}
class Parent {
public void method() {
// do something here
}
}

多态
//汽车接口
interface Car {
// 汽车名称
String getName();
// 获得汽车售价
int getPrice();
}
// 宝马
class BMW implements Car {
public String getName() {
return "BMW";
}
public int getPrice() {
return 300000;
}
}
// 奇瑞QQ
class CheryQQ implements Car {
public String getName() {
return "CheryQQ";
}
public int getPrice() {
return 20000;
}
}
// 汽车出售店
public class CarShop {
// 售车收入
private int money = 0;
// 卖出一部车
public void sellCar(Car car) {
System.out.println("车型:" + car.getName() + " 单价:" + car.getPrice());
// 增加卖出车售价的收入
money += car.getPrice();
}
// 售车总收入
public int getMoney() {
return money;
}
public static void main(String[] args) {
CarShop aShop = new CarShop();
// 卖出一辆宝马
aShop.sellCar(new BMW());
// 卖出一辆奇瑞QQ
aShop.sellCar(new CheryQQ());
System.out.println("总收入:" + aShop.getMoney());
}
}

运行结果:1. 车型:BMW 单价:300000
2. 车型:CheryQQ 单价:20000
3. 总收入:320000

多态是在继承的基础上实现的,将一个方法调用同这个方法所属的主体(也就是对象或类)关联起来叫做绑定,分前期绑定和后期绑定两种。下面解释一下它们的定义:
1. 前期绑定:在程序运行之前进行绑定,由编译器和连接程序实现,又叫做静态绑定。
比如static方法和final方法,注意,这里也包括private方法,因为它是隐式final的。
2. 后期绑定:在运行时根据对象的类型进行绑定,由方法调用机制实现,因此又叫做动
态绑定,或者运行时绑定。除了前期绑定外的所有方法都属于后期绑定。
多态就是在后期绑定这种机制上实现的。


重载、重写(overloading,overriding)
重写,英文名是overriding,是指在继承情况下,子类中定义了与其基类中方法具有相同
型构的新方法,就叫做子类把基类的方法重写了。这是实现多态必须的步骤。
重载,英文名是overloading,是指在同一个类中定义了一个以上具有相同名称,但是型构
不同的方法。在同一个类中,是不允许定义多于一个的具有相同型构的方法的。
分享到:
评论

相关推荐

    臧圩人--JAVA面试题解惑系列合集.pdf

    **1.9 JAVA面试题解惑系列(九)——继承、多态、重载和重写** - **知识点**:详解面向对象编程的三大特性:继承(类间关系)、多态(行为多样性)、重载(方法签名不同)、重写(方法签名相同,但实现不同),以及...

    JAVA面试题解惑系列合集

    .63 1.9 JAVA面试题解惑系列(九)——继承、多态、重载和重写 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 1.10 JAVA面试题解惑系列(十)——话说多线程 . . . . . . . . . . . . . . . ...

    Java面试题解惑系列

    来自网络,主要包括以下内容:1、类初始化的顺序;2、到底创建了几个String对象;3、变量(属性)的覆盖;...9.继承,多态,重载,重写;10.多线程;11.运算符总结。 适合将要笔试面试Java的朋友参考。

    JAVA面试题解惑系列

    【JAVA面试题解惑系列】是一系列专门针对Java开发者面试准备的文章集合,涵盖了多个核心Java概念和面试常问问题。作者臧圩人在JavaEye社区分享了这个系列,旨在帮助求职者理解和解答面试中可能出现的疑问。 1. **类...

    Java面试题详解,和一些基础知识的深入剖析,个人认为非常棒

    “JAVA面试题解惑系列(九)——继承、多态、重载和重写”是面向对象编程的基础,继承允许类之间的层次结构,多态提供了一种“一个接口,多种实现”的灵活性,而重载和重写则涉及到方法签名和行为的差异。...

    JAVA面试题解惑系列114页.pdf

    - **继承、多态、重载和重写**:继承允许一个类(子类)继承另一个类(父类)的属性和方法;多态是子类对象可以替换父类对象的能力;重载发生在同一类中,方法名相同但参数列表不同;重写发生在子类中,子类覆盖父类...

    java面试题

    给定文件的内容主要涉及Java开发中常见的面试题解惑系列,其中涵盖了类的初始化顺序、String对象的创建、变量覆盖、final关键字的用法、引用传递以及字符串处理等重要的Java知识点。 首先,关于类的初始化顺序,...

Global site tag (gtag.js) - Google Analytics