抽象类和接口
抽象类
类中定义一些不含方法体的方法,它的方法体实现交给该类的子类根据自己的情况去实现,这样的方法就是抽象方法,包含抽象方法的类就是抽象类。包含的抽象方法一个或多个。。
定义规则:
A. 抽象类abstract修饰符来修饰,抽象方法用abstract来修饰
B. 抽象类不能实例化(就是不能用new 去生成对象)
C. 抽象方法只需声明,不需实现,
D. 抽象方法的类必须声明是抽象类,抽象类的子类必须覆盖所有抽象方法后,才能被实例化,否则还是个抽象类
abstract int aa(int a){} // 错,有花括号,有实现部分,只不过为空、、、
正确的形式是:abstract int aa(int a);
抽象类中抽象的方法,必须有关键字abstract
Vehicle v = new Car(); 正确
// 多态的体现,虽然抽象类不可以创建对象,但是可以声明一个变量,引用可以实现了抽象方法的的子类对象,
子类可以继承抽象类的属性和方法(和普通类继承一样),父类抽象类定义非private的成员变量,子类可以继承
接口(interface)
如果一个抽象类的所有方法都是抽象的,就可以将这个类用另外一种方式定义,用接口定义。
接口是抽象方法和常量值的集合,从本质上讲,接口是一种特殊的抽象类,其中没有变量和方法实现。
定义:
public interface Runner{
int ID=1;
void run( );//// 不用abstract修饰!!这点和抽象类不同。。要abstract也可以。
}
接口的特点 :
u 在接口里只能声明抽象方法。
u 接口只能声明常量(final)
u 接口里只能声明public的访问权限
int ID = 1; 相当于public static final int ID = 1;
接口定义中成员默认都是public访问类型的,
变量默认都是public static final标识的,所以接口中定义的变量都是全局静态常量
用法:
u 定义一个新接口,用extends继承一个已有接口
u 定义一个类,用implements去实现一个接口中所有方法
u 定义一个抽象类,用implements去实现已有接口中的部分方法
u 可以实现多态,例子如下
Fly[] flys = new Fly[2];
//可以实现多态,只要实现了接口Fly的类的对象都可以用flys中元素指向
flys[0] = new Plane();
flys[1] = new Bird();
但是只能直接访问该接口中的定义的方法,如果要调用另外一个接口中定义的方法,要进行格式转换
Sing s = new Plane();
s.sing();
if (s instanceof Fly){ // 飞机实现了Fly,和Sing两个接口
((Fly)s).fly();
}
u 多个接口,用逗号分隔。例如:class A implements Fly, Sing{};
请说说接口和抽象类的区别?
面试频率最高的JAVA问题 估计90%的人都答不好
我的答案是:
1.从使用目的来看:
接口只是一个类间的协议,它并没有规定怎么去实现;
抽象类可以重用你代码使你的代码更加简洁;
2.从行为来看:
接口可以多继承,multi-implement
抽象类不能实例化,必须子类化才能实例化;
3.从属性来看:
接口的属性必须是常量;即public static final;
抽象类的属性没有要求;
4.从方法来看:
接口的每个方法只是声明不包括内容;
抽象类的方法即可以是抽象的也可以不是抽象的;一般至少有一个是抽象的;
分享到:
相关推荐
### 详细解析Java中抽象类和接口的区别 #### 引言 在面向对象编程中,Java作为一种广泛应用的编程语言,提供了多种方式来实现抽象的概念。其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这...
本项目主要包括项目开发环境搭建、不同功能的类的设计、抽象类的设计、接口的设计、及其继承抽象类重写和接口实现类等具体功能的实现。 ●工程项目搭建与游戏初始化功能实现(2学时) ; ●动物城成员列表与动物信息...
### 抽象类和接口的区别分析 在面向对象编程中,抽象类与接口都是实现代码复用和提高软件模块化的重要工具。它们各自拥有独特的特性和应用场景,掌握这些概念对于编写高质量、可维护性强的代码至关重要。下面我们将...
抽象类和接口实验报告
在C#编程语言中,抽象类和接口是实现面向对象编程(OOP)中的多态性和代码重用的关键概念。本文将深入探讨这两个概念,并解释它们在C#中的使用方式和区别。 ### 抽象类 抽象类是一种特殊的类,它不能被实例化,其...
Java中的类、抽象类和接口的区别和联系
在C#编程语言中,抽象类和接口都是用于实现面向对象编程中多态特性的关键概念。它们都旨在为其他类提供一种定义行为和特性的模板或规范,但它们之间存在着重要的区别。本文将详细探讨C#中的抽象类与接口之间的差异,...
在编程世界中,抽象类和接口是面向对象设计的重要概念,它们都用于实现代码的抽象和多态性,但有着不同的使用场景和规则。这里我们将深入探讨这两种机制,并结合给出的"codePiece"代码片段来分析它们在实际应用中的...
在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,为其他类提供模板或行为指南。让我们深入探讨这两个概念及其在Java中的应用。 首先,我们来理解抽象类。在Java中,抽象类是一...
在编程世界中,抽象类和接口是两种非常重要的概念,它们在实现代码的组织和设计模式上发挥着关键作用。本文将深入探讨抽象类与接口的异同,并结合实际应用场景来帮助理解这两种机制。 首先,让我们从定义开始。抽象...
此书对于你学习Java抽象类和接口有非常大的帮助
在Java中,可以通过两种形式来体现OOP(Object Oriented Programming,OOP,面向对象程序设计)的抽象:接口和抽象类。 这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换...
这里我们将详细讨论这些概念以及抽象类与接口之间的相同点和区别。 首先,让我们来看看抽象类(Abstract Class): 1. 抽象方法是只有声明没有实现的方法,可以视为没有方法体的虚方法。例如: ```csharp public ...
简单介绍了抽象类和接口
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...