抽象类

抽象类要使用abstract关键字声明,不能使用static,final修饰,因为抽象类就是被继承的

抽象类的方法static也不能修饰

抽象类的使用原则如下:

(1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public;

(2)抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理;

(3)抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类;

(4)子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。);

除此之外抽象类与普通类没有区别!

public abstract class Shouji {public abstract void cell();}public class Putongshouji extends Shouji {@Overridepublic void cell() {System.out.println("三星Note7 Ga***");}}

接口

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。

接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。

接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法

当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。

类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

抽象类(abstract class)和接口(interface)有什么异同?
答:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的。抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。

例子:

interface Shape {public abstract double comLength();public abstract double comArea();
}
public class Rect implements Shape {
private int x,y;
public Rect() {
super();
// TODO Auto-generated constructor stub
}
public Rect(int x, int y) {
super();
this.x = x;
this.y = y;
}
@Override
public double comLength() {
// TODO Auto-generated method stub
return 2 * (this.x + this.y);
}
@Override
public double comArea() {
// TODO Auto-generated method stub
return  this.x * this.y;
}
}
public class Circle implements Shape {
private double r;
public Circle(double r) {
super();
this.r = r;
}
public Circle() {
super();
// TODO Auto-generated constructor stub
}
@Override
public double comLength() {
// TODO Auto-generated method stub
return 2 * Math.PI * this.r;
}
@Override
public double comArea() {
// TODO Auto-generated method stub
return Math.PI * this.r;
}
}

抽象类(abstract class)和接口(interface)相关推荐

  1. php中的抽象类(abstract class)和接口(interface)

    一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 ...

  2. Java抽象类(Abstract Class)与接口(Interface)区别

    抽象类与接口比较 抽象类跟接口类似,都不能实例化,可能包含不需实现方法或已实现的方法. 抽象类可以定义一些不是静态或常量的字段,定义 public, protected, private访问级别的具体 ...

  3. JAVA的abstract修饰符 接口interface用法 抽象类和interface的差别

    转自:http://blog.csdn.net/zhandoushi1982/article/details/8458081 abstract修饰符可以修饰类和方法. (1)abstract修饰类,会 ...

  4. abstract类和接口interface的联系和区别

    一,用关键字abstract类修饰的类称为abstract类(抽象类). abstract class A{ ----. } 特点: 1. 抽象类中可以有抽象方法和非抽象方法,但是抽象方法只允许声明不 ...

  5. php 类 接口的区别吗,PHP的接口类(interface)和抽象类(abstract)的区别

    /** * 接口类:interface * 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类, * 那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候 ...

  6. 一文总结:抽象类(abstract)与接口(interface)的特点和代码展示

    文章目录 1. 什么是抽象类? 2. 抽象类与抽象方法的特点 3. 抽象类的应用 4. 什么是接口? 5.接口的特点 6.接口面试题 7.抽象类与接口的对比 本篇文章已同步到:https://www. ...

  7. java 抽象接口类,Java接口(interface)和Java抽象类(abstract class)的区别(详诉版)

    1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架, 当代表业务逻辑的高层抽象层结构合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...

  8. 小论接口(interface)和抽象类(abstract class)的区别

    接口是类实现了某一种功能的体现,这种体现往往是对外的,所以重载接口的函数一定是public的 可是初学OO编程的时候,往往会碰到一个问题,既然有接口(interface)的存在,为什么还要有抽象类(a ...

  9. 接口Interface和抽象类abstract class的区别

    abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和inte ...

  10. 零基础入门 自学 JAVA SE 基础篇(九)instanceof final 开闭原则 多态 抽象(abstract)方法与抽象类 接口(interface)

    JAVA SE自学 基础篇 多态 instanceof final 开闭原则 多态 抽象(abstract)方法与抽象类 接口(interface) 目标 父类型与子类型之间的转换及instanceo ...

最新文章

  1. ORA-12518 TNS:监听程序无法分发客户机连接 解决办法
  2. Linux的iptables在指定的防火墙规则序号前添加防火墙规则
  3. GDCM:改变dcm文件的PrivateTag测试程序
  4. Jmeter之事物控制器
  5. 计蒜客挑战难题:爬楼梯
  6. bae java乱码_BAE json 返回乱码。
  7. MATLAB之基本语法与基础函数
  8. linux 中文乱码 转png_使用pdfBox实现pdf转图片,解决中文方块乱码等问题
  9. VPP 20.09版本正式发布
  10. 【心电信号】基于matlab Simulink胎儿心电信号提取【含Matlab源码 1550期】
  11. squid笔记下载_Squid笔记APP下载|Squid笔记安卓版下载
  12. 1026 程序运行时间
  13. 洛谷P4147 玉蟾宫(单调栈解决)
  14. 小米手机手机远行linux,Ubuntu的Android Studio调试小米手机的方法
  15. python爬虫入门之————————————————案例演练
  16. 微众银行大数据爽约? 回应:这是一种误解
  17. 加州大学4.8万人大罢工!博士竟卖血为生,多校濒临崩溃!
  18. java高级架构师工资多少啊,附源代码
  19. J2EE的13个标准(规范)
  20. python进行简单的文本相似度分析

热门文章

  1. WebGIS学习路线
  2. 对抗攻击经典论文——FGSM学习笔记 EXPLAINING AND HARNESSING ADVERSARIAL EXAMPLES
  3. 蓝牙HC05模块探究-设置AT指令
  4. addEventListener 的event事件列表
  5. 区块链100讲:Truffle——一个更简单的部署智能合约的方法
  6. 卡普的21个NP完全问题-问题描述
  7. 关于不能访问腾讯云服务器tomcat的问题解决
  8. 四十三、Fluent增强收敛性-伪瞬态计算
  9. Ngrok(内网穿透工具)使用教程详解
  10. 嵌入式硬件开发工程师涉及哪些工作内容?