Java中所有的类都是Object的子类。
子类继承超类中所有可以被子类访问的成员(变量和方法)。
子类不能继承超类的构造方法。
子类除了可以继承超类中的变量及方法,还可以增加自己的成员。当一个超类成员不适合该子类时,子类会以恰当的方式重新定义它,就是隐藏超类的成员。
子类不能继承超类的构造方法,但在子类构造方法中可以使用super(参数列表)调用超类的构造方法。
如果子类的构造方法中没有显式的调用超类构造方法,也没有用this关键字调用重载的其他构造方法,则在产生子类的实例对象时,系统默认调用超类无参构造方法。
如果子类构造方法中没有显式地调用超类构造方法,而超类中又没有无参数的构造方法,则编译出错。所以,我们在定义类时,只要定义了有参数的构造方法,通常还需要定义一个无参数的构造方法。
创建子类对象时,系统会隐式先为其各自创建对应的父类对象。
extends和implements的关系
extends是继承,类只能继承类,接口只能继承接口。如接口A可以继承接口B,那么接口A就会得到接口B声明的变量和方法。
implements是实现,只能实现接口,不能实现抽象类。如类A可以实现接口A,那么类A必须实现接口A的所有方法,不然A就是抽象类。
注意继承和实现的区别。
接口Interface
1. 接口中的成员变量默认都是public、static、final类型的,必须被显式初始化。
2. 接口中的方法默认都是public、abstract类型的。
3. 接口中只能包含public、static、final类型的成员变量和public、abstract类型的成员方法。(可以省略其中一个或多个修饰符)
4. 接口没有构造方法,不能被实例化,在接口中定义构造方法是非法的。
5. 一个接口不能实现另一个接口,但它可以继承多个其他接口。interface C extends A, B{} // A和B都是接口
6. 当类实现某个接口时,它必须实现接口中所有的抽象方法,否则这个类必须被定义为抽象类。
7. 接口中没有方法体
在类的继承中,只能做单重继承,而实现接口时,一次则可以实现多个接口,每个接口间使用逗号“,”分隔。
这时就可能出现常量或方法名冲突的情况,解决该问题时,如果常量冲突,则需要明确指定常量的接口,这可以通过“接口名.常量”实现。如果出现方法冲突时,则只要实现一个方法就可以了。
如下例子:
package com.ez; /** * 机器 * @author 窗外赏雪(EZ编程网) */ public interface Machine { /** * 功率 */ int power=10; /** * 机器都会转动 */ void turn() throws RuntimeException; }
package com.ez; /** * 交通工具 * @author 窗外赏雪(EZ编程网) */ public interface Vehicle { /** * 速度 */ int speed=10; /** * 功率 */ int power=20; /** * 交通工具都会滴滴叫 */ void didi(); /** * 转动 */ void turn(); }
package com.ez.impl; import com.ez.Machine; import com.ez.Vehicle; public class Corolla2 implements Machine,Vehicle{ @Override public void didi() { System.out.println(Machine.power); } @Override public void turn() throws RuntimeException { System.out.println(Vehicle.power); } }
抽象类:任何包含抽象方法的类必须被声明为抽象类。
抽象类和抽象方法都必须用abstract关键字来修饰
抽象类不能实例化,即不能用new关键字去产生对象。
抽象方法只需声明,不需实现。
含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后,才能被实例化,否则这个子类还是个抽象类。
最终类:是指不能被继承的类,即最终类不能有它的子类。
如:final class C1
最终方法不能被子类重写。
如:final void m1();
final变量只能赋值一次(只能在声明的同时或在该类的构造方法中赋值)。
静态final变量只能赋值一次,并且只能在声明的时候赋值。
相关推荐
1.继承及继承实例 2.方法重写(Overwrite) 3.super关键字 4.方法重载(Overload) 5.final修饰符 6.abstract修饰符 7.抽象类 8.接口 9.接口和抽象类对比 10.接口和抽象类使用场合实例 11.总结
"Java抽象类和接口和继承之间关系" Java抽象类和接口是两种不同的概念,它们之间存在着继承关系。在Java中,抽象类(abstract class)和接口(interface)都是用来描述对象的行为和状态的,但它们之间有着明显的...
一个使用了接口,抽象类,继承的JAVA类,模拟了计算机的组装过程
### JAVA继承基本类、抽象类、接口的区别与联系 #### 一、概述 在Java语言中,类(Class)的设计是面向对象编程的核心之一。Java提供了三种方式来扩展类的功能:基本类、抽象类和接口。这三者之间既有相似之处,也...
在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,供其他类去实现或继承。在这个练习中,我们将深入理解这两种机制,并通过实际的代码示例和注释来加深理解。 首先,让我们讨论...
5. 接口可以有多重继承,而类只能单继承抽象类。 现在,让我们看看抽象类和接口的相同点和区别: 相同点: 1. 都可以被继承,为派生类提供共享的行为和属性。 2. 都不能被实例化,只能作为其他类的基础。 3. 都...
Java 类、抽象类、接口和继承是面向对象编程的核心概念,它们构成了 Java 语言的基石。在 Java 中,类是用来封装数据和行为的结构,而对象则是类的实例,具有具体的属性和行为。 1. **类与对象的区别** 类是模板...
Java抽象类接口与多态PPT教案学习 Java抽象类接口与多态是Java编程语言的核心概念,本篇资源文件将详细介绍Java中的抽象类、接口和多态的概念、特点和应用。 一、抽象类 抽象类是Java中的一种特殊的类,它不能被...
### 详细解析Java中抽象类和接口的区别 #### 引言 在面向对象编程中,Java作为一种广泛应用的编程语言,提供了多种方式来实现抽象的概念。其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这...
- **抽象类不可以继承接口**:抽象类与接口之间的关系只能是实现(implements),而不是继承(extends)。当一个抽象类实现接口时,它可以选择不实现接口的所有方法,将其子类负责具体实现。 - **接口可以继承接口*...
3. 接口可以被多重实现,抽象类只能被单一继承。 4. 抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中。 5. 抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物...
5. **接口与抽象类的区别**:对比两者在使用上的差异,包括继承的数量限制(一个类只能继承一个抽象类,但可以实现多个接口)和成员类型(抽象类可有实例变量,接口则没有)。 6. **适配器模式**:可能会介绍如何...
在Java编程语言中,抽象类和接口...在选择使用抽象类还是接口时,通常要考虑以下因素:是否需要共享实现、是否有多重继承的需求以及设计上的约束。正确使用这两种机制可以帮助我们构建更加灵活、可扩展的Java应用程序。
3. **继承限制**:C#中一个类只能继承一个抽象类,但可以实现多个接口。 4. **访问修饰符**:抽象类中的成员可以有任意的访问级别,而接口中的成员默认是公共的。 5. **默认实现**:自C# 8.0起,接口可以包含带有...
3. 抽象类可以继承其他抽象类或接口,而接口只能继承其他接口。 思考题: A. 非抽象类能否包含抽象方法?为什么? 答案:不能。非抽象类不能包含抽象方法,因为抽象方法只能在抽象类中声明。 B. 抽象类能否包含...
本主题将深入探讨如何使用普通类、接口和抽象类来实现这些继承方式,并应用到“增、删、改、查”(CRUD,Create, Read, Update, Delete)操作中。 首先,单继承是指一个子类只能继承一个父类的特性。这种方式使得...
### Java抽象类与接口的区别 #### 一、引言 在Java编程中,抽象类(Abstract Class)与接口(Interface)都是实现抽象的关键工具。它们各自有着独特的优势和适用场景,掌握这两者的区别有助于开发者更好地设计系统...
面向抽象类接口编程是一种设计原则,它强调程序应依赖于接口而非具体的实现。在C++中,这通常通过使用抽象类(包含纯虚函数的类)来实现。这种编程方式提高了代码的灵活性、可扩展性和可维护性。下面将详细讨论这个...
6. 继承关系:抽象类遵循传统的继承关系,接口之间可以采用多重继承,即一个接口可以继承多个其他接口。 在实际开发中,我们通常会根据需求来选择使用抽象类还是接口。如果需要为一组相关的类提供公共的属性和方法...