`

抽象类 接口 继承

阅读更多

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变量只能赋值一次,并且只能在声明的时候赋值。

 

分享到:
评论

相关推荐

    Java继承_抽象类与接口的应用.

    1.继承及继承实例 2.方法重写(Overwrite) 3.super关键字 4.方法重载(Overload) 5.final修饰符 6.abstract修饰符 7.抽象类 8.接口 9.接口和抽象类对比 10.接口和抽象类使用场合实例 11.总结

    Java抽象类和接口和继承之间关系

    "Java抽象类和接口和继承之间关系" Java抽象类和接口是两种不同的概念,它们之间存在着继承关系。在Java中,抽象类(abstract class)和接口(interface)都是用来描述对象的行为和状态的,但它们之间有着明显的...

    一个使用了接口,抽象类,继承的JAVA类

    一个使用了接口,抽象类,继承的JAVA类,模拟了计算机的组装过程

    JAVA 继承基本类、抽象类、接口区别与联系

    ### JAVA继承基本类、抽象类、接口的区别与联系 #### 一、概述 在Java语言中,类(Class)的设计是面向对象编程的核心之一。Java提供了三种方式来扩展类的功能:基本类、抽象类和接口。这三者之间既有相似之处,也...

    java 抽象类与接口的练习

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,供其他类去实现或继承。在这个练习中,我们将深入理解这两种机制,并通过实际的代码示例和注释来加深理解。 首先,让我们讨论...

    C#类、接口、虚方法和抽象方法-抽象类和接口的相同点和区别

    5. 接口可以有多重继承,而类只能单继承抽象类。 现在,让我们看看抽象类和接口的相同点和区别: 相同点: 1. 都可以被继承,为派生类提供共享的行为和属性。 2. 都不能被实例化,只能作为其他类的基础。 3. 都...

    \\java类、抽象类、接口、继承和对象解析 .doc

    Java 类、抽象类、接口和继承是面向对象编程的核心概念,它们构成了 Java 语言的基石。在 Java 中,类是用来封装数据和行为的结构,而对象则是类的实例,具有具体的属性和行为。 1. **类与对象的区别** 类是模板...

    Java抽象类接口与多态PPT教案学习.pptx

    Java抽象类接口与多态PPT教案学习 Java抽象类接口与多态是Java编程语言的核心概念,本篇资源文件将详细介绍Java中的抽象类、接口和多态的概念、特点和应用。 一、抽象类 抽象类是Java中的一种特殊的类,它不能被...

    详细解析Java中抽象类和接口的区别

    ### 详细解析Java中抽象类和接口的区别 #### 引言 在面向对象编程中,Java作为一种广泛应用的编程语言,提供了多种方式来实现抽象的概念。其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这...

    抽象类 接口

    - **抽象类不可以继承接口**:抽象类与接口之间的关系只能是实现(implements),而不是继承(extends)。当一个抽象类实现接口时,它可以选择不实现接口的所有方法,将其子类负责具体实现。 - **接口可以继承接口*...

    接口与抽象类区别

    3. 接口可以被多重实现,抽象类只能被单一继承。 4. 抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中。 5. 抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物...

    教学视频-抽象类&接口

    5. **接口与抽象类的区别**:对比两者在使用上的差异,包括继承的数量限制(一个类只能继承一个抽象类,但可以实现多个接口)和成员类型(抽象类可有实例变量,接口则没有)。 6. **适配器模式**:可能会介绍如何...

    Java源代码:抽象类和接口

    在Java编程语言中,抽象类和接口...在选择使用抽象类还是接口时,通常要考虑以下因素:是否需要共享实现、是否有多重继承的需求以及设计上的约束。正确使用这两种机制可以帮助我们构建更加灵活、可扩展的Java应用程序。

    c# 中抽象类和接口的学习

    3. **继承限制**:C#中一个类只能继承一个抽象类,但可以实现多个接口。 4. **访问修饰符**:抽象类中的成员可以有任意的访问级别,而接口中的成员默认是公共的。 5. **默认实现**:自C# 8.0起,接口可以包含带有...

    第讲-抽象类接口优秀文档.ppt

    3. 抽象类可以继承其他抽象类或接口,而接口只能继承其他接口。 思考题: A. 非抽象类能否包含抽象方法?为什么? 答案:不能。非抽象类不能包含抽象方法,因为抽象方法只能在抽象类中声明。 B. 抽象类能否包含...

    采用普通类,接口,和抽象类实现单继承和多继承增,删,改,查

    本主题将深入探讨如何使用普通类、接口和抽象类来实现这些继承方式,并应用到“增、删、改、查”(CRUD,Create, Read, Update, Delete)操作中。 首先,单继承是指一个子类只能继承一个父类的特性。这种方式使得...

    java抽象类与接口区别

    ### Java抽象类与接口的区别 #### 一、引言 在Java编程中,抽象类(Abstract Class)与接口(Interface)都是实现抽象的关键工具。它们各自有着独特的优势和适用场景,掌握这两者的区别有助于开发者更好地设计系统...

    面向抽象类接口编程.rar

    面向抽象类接口编程是一种设计原则,它强调程序应依赖于接口而非具体的实现。在C++中,这通常通过使用抽象类(包含纯虚函数的类)来实现。这种编程方式提高了代码的灵活性、可扩展性和可维护性。下面将详细讨论这个...

    java 抽象类与接口的区别

    6. 继承关系:抽象类遵循传统的继承关系,接口之间可以采用多重继承,即一个接口可以继承多个其他接口。 在实际开发中,我们通常会根据需求来选择使用抽象类还是接口。如果需要为一组相关的类提供公共的属性和方法...

Global site tag (gtag.js) - Google Analytics