就业班JavaSE--day03 每日作业卷3

preview
需积分: 0 0 下载量 151 浏览量 更新于2022-08-08 收藏 54KB DOCX 举报
【接口与多态】 在Java编程语言中,接口(Interface)是一种完全抽象的类型,它不包含具体的方法实现,只定义了方法的签名。接口的主要特点是: 1. 接口中所有的成员方法默认都是抽象的(abstract)和公开的(public),无需指定这两个修饰符。 2. 接口中不能包含实例变量(成员变量),只能定义常量(final static)。 3. 接口不能直接创建对象,因为它们没有实例化方法。接口的作用是用来被类实现(implements),以实现特定的功能或协议。 抽象类(Abstract Class)则可以包含抽象方法和非抽象方法,它可以有实例变量,并且可以初始化。与接口相比: 1. 类只能单继承一个抽象类,但可以实现多个接口,体现了Java的多态特性。 2. 抽象类可以提供部分实现,而接口中所有方法必须由实现类完全实现。 3. 如果一个类需要实现多个行为,但又不想继承多个类(Java不支持多继承),那么使用接口是更好的选择。 在选用接口还是抽象类时,通常要考虑以下几点: - 如果需要实现多个行为,接口是首选。 - 如果希望提供一些默认的实现或者共享一些状态(实例变量),则选择抽象类。 【多态性】 多态性(Polymorphism)是面向对象编程的重要特性之一,它允许我们使用父类类型的引用指向子类对象,从而调用子类的方法。多态的实现基于以下前提条件: 1. 类型之间的继承关系(子类继承父类)或接口实现。 2. 子类重写(override)了父类的某个方法。 多态带来的好处包括代码的可扩展性和灵活性,但同时也有一些注意事项: 1. 向上转型(Upcasting):父类引用指向子类对象,这是自动进行的,可以调用父类中的方法,但无法访问子类特有的属性和方法。 2. 向下转型(Downcasting):需要显式将父类引用转换为子类类型,以便调用子类特有的方法。需要注意的是,如果父类引用实际指向的对象不是子类,向下转型会抛出ClassCastException。 通过实际的代码示例,我们可以更好地理解这些概念。例如,定义一个PlayGame接口,然后有Phone和Computer类实现这个接口,分别实现玩游戏的功能。这样,我们可以通过PlayGame接口的引用调用不同设备的游戏功能,实现多态性。 同样,我们可以定义一个Audi类,代表普通奥迪车,以及一个SmartAudi类,继承自Audi并实现Smart接口,具备自动泊车和无人驾驶的功能。在测试类中,我们可以创建这两个类的对象,然后通过向上转型调用通用的方法,通过向下转型调用特定类的方法,充分展示多态性的运用。