Java Abstract class and Interface
Abstract Class
- 在定义class的时候必须有abstract 关键字
- 抽象方法必须有abstract关键字。
- 可以有已经实现的方法。
- 可以定义static final 的常量。
- 可以实现接口。
- 抽象类实现接口可以不实现接口中的抽象方法,而在其具体的子类中实现,但是这样代码的可读性不是很好。
Interface
- 在定义class的时候必须有interface 关键字
- 方法默认是抽象方法,不需要abstract关键字。
- 不能有已经实现的方法。
- 可以定义static final 的常量。
- 可以用extends关键字继承接口, 而不能用implements。应为interface只能包含未实现的抽象方法,所以无法使用implements关键字。
- 接口中的抽象方法不能使用private和protected修饰符,可以不用修饰符或者使用public修饰符。在子类中实现接口的抽象方法的时候, 必须使用public关键字修饰。
Phone [interface]:
interface Phone{
/**
* getPhoneNumber()
* @return
*/
String getPhoneNumber();
}
Iphone [interface]:
public interface Iphone extends Phone{
/**
* getPhoneName()
* @return
*/
String getPhoneName();
/**
* getPhoneType()
* @return
*/
int getPhoneType();
}
PhoneBase [abstract class]:
public abstract class PhoneBase implements Iphone{
private static final String TAG = "PhoneBase";
abstract void fun1();
void fun2(){
System.out.println("This is fun2");
}
@Override
public String getPhoneName() {
// TODO Auto-generated method stub
return null;
}
@Override
public int getPhoneType() {
// TODO Auto-generated method stub
return 0;
}
@Override
public String getPhoneNumber() {
// TODO Auto-generated method stub
return null;
}
}
GsmPhone [normal class]:
public class GsmPhone extends PhoneBase{
@Override
void fun1() {
// TODO Auto-generated method stub
}
}
//PhoneBase mPhoneBase1 = new PhoneBase(); //不能实例化一个抽象类
//Iphone p = new Iphone();//不能实例化一个接口
PhoneBase mPhoneBase = new GsmPhone();
Iphone iPhone = new GsmPhone();
Phone mPhone = new GsmPhone();
Java Abstract class and Interface的更多相关文章
- Java abstract class 和 interface 的区别
Java abstract class 和 interface 的区别 1. abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制 2. 以Door的抽象概 ...
- 【转载】java abstract class和interface的区别
转载:https://blog.csdn.net/b271737818/article/details/3950245 在Java语言中,abstract class和interface是支持抽象类定 ...
- 11)Java abstract class 和 interface
abstract class 和 interface 的区别 含有abstract修饰符的class即为抽象类,abstract 类不能创建实例对象.含有abstract方法的类必须定义 ...
- Java abstract 抽象类 和interface接口的异同点
abstract 抽象类 和interface接口的异同点 相同点: 抽象类和接口都不能实例化,他们都位于继承树顶端,被其他类实现和继承 都可以包含抽象方法,实现接口或者继承抽象类的非抽象类(普通类) ...
- Java abstract interface与 interface的区别
我们常常遇到abstract class与 interface的区别,今天却遇到了abstract interface,感觉interface不用abstract再修饰了啊.结论:事实也确实如此,编译 ...
- Java中abstract class 和 interface 的解释和他们的异同点(转)
(一)概述 在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存 在,才赋予了Java强大的 面向对象能力.abstract ...
- java中接口(interface)和虚基类(abstract class)的区别
在Java语言中,abstract class和interface是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的面向对象能力.abstract class和interfa ...
- `Java`中`abstract class`与`interface`区别
abstract class Java中允许使用abstract修饰符声明方法,此时只定义方法但是不实现方法(abstract修饰的方法没有主体,只有一个签名和一个分号). 以下是abstract方法 ...
- 深入理解abstract class和interface(转)
原文地址 深入理解abstract class和interface java提高篇(四)-----抽象类与接口
随机推荐
- Java中的线程同步机制
一.首先为什么线程需要同步? 1.多线程安全问题的原因 A:有多线程环境 B:有共享数据 C:有多条语句操作共享数据 2. //未完待续后面会继续更新
- Mysql 如何做双机热备和负载均衡
MySQL数据库没有增量备份的机制,但它提供了一种主从备份的机制,就是把主数据库的所有的数据同时写到备份数据库中.实现MySQL数据库的热备份. 下面是具体的主从热备份的步骤:假设主服务器A(mast ...
- Window驱动开发
驱动开发 参考文章: Windbg+Vmware驱动调试 http://blog.csdn.net/xuepiaosong/article/details/8236702 驱动调试攻略(WinDbg) ...
- DedeCMS模板文件不存在,无法解析文档! 问题定位方法
生成静态的时候,经常会遇到“模板文件不存在,无法解析文 档!”的问题.很多朋友试过论坛里很多方法,都是针对某些人可以解决,某些人的问题依旧,为什么呢?其实问题很可能确实是多种多样的,表现结果却是一样, ...
- 三种用于select 的选择器
<html lang="en"> <head> <meta charset="utf-8"> <title>选项 ...
- HDU:Integer Inquiry
#include"stdio.h" #include"stdlib.h" #include"string.h" #define N 105 ...
- tomcat部署到根路径
在Tomcat中部署war包很简单: 首先,直接把相应的war包放到$TOMCAT_HOME/webapps下,不用建目录: 然后,修改$TOMCAT_HOME/conf/server.xml,在Ho ...
- AreYouBusy
AreYouBusy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...
- Unity-Animato深入系列---FloatValue阻尼
回到 Animator深入系列总目录 Animator的SetFloat接口可以设置阻尼,并且4种类型变量只有float是支持阻尼的. public void SetFloat(int id, flo ...
- 测试-Unity修改权重
以下内容仅为猜想,只进行了初步验证 FBX骨骼中包含所绑定的顶点索引,导入Unity后,Unity会把层级树保存起来,然后实例化的时候映射过去 编辑器下权重信息本身不在fbx文件的meta里,不可修改 ...