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提高篇(四)-----抽象类与接口
随机推荐
- 【JQGRID DOCUMENTATION】.学习笔记.4.Navigator
Navigator是一个将查找或编辑记录的动作,变得非常容易达到用户交互特性.开发者可以创建自定义动作,也可以使用六个预定义的动作.jqGrid为预定义的动作提供icon button图形. 一组完整 ...
- PHP处理CSV表格文件的常用操作方法是怎么样呢
php来说,fgetcsv读入csv表格,返回一个数组,然后foreach输出成HTML的<table>,这步操作几行代码就能实现,非常简单.工作量主要还在于浏览器前端,建议你用jQuer ...
- 通过Oracle数据库访问控制功能的方法(Database access control)
修改sqlnet.ora文件中的IP列表后都需要重启监听才能生效.(原文是: Any changes to the values requires the TNS listener to be sto ...
- 使用crontab不能正常执行的问题
crontab -l: 列出当前用户的crontab列表crontab -e: 以vi打开crontab文件,可以进行编辑.如果需要加新的自启动项目,可以在此进行添加后再输入:wq 保存. & ...
- android 数据库操作
做android的数据库方面用的很少,所以用的时候记录下来,下次碰到直接copy,一下代码是最基本的实现: 首先是继承helper类: package com.create.rycreateim.db ...
- Prince2的七大原则(5)
[Prince2科普]Prince2的七大原则(5) 按照惯例我们先来回顾一下,PRINCE2七大原则分别是指:持续的业务验证,经验学习,角色与责任,按阶段管理,例外管理,关注产品,剪裁. 第五个原则 ...
- sass初步认识2
sass可以使用变量,采用 $ 来进行变量声明,格式为: $highlight-color:#f90;(声明方式和css属性声明类似.使用的变量名可以更加语义化) 与js分为全局变量和局部变量类似,s ...
- 20151221001 GridView 模板
<asp:GridView ID="GridView1" runat="server" AllowPaging=" ...
- 批发网加盟页面轮播Jquery jcarousellite插件效果
Jquery jcarousellite 插件的好处 其中: 参数说明: btnPrev string 上一个按钮的class名, 比如 btnPrev: ".prev" ...
- UML中的用例(Use Case)概念分析及StarUML实例
在UML中use case似 乎最簡單的,用例建模的最主要功能就是用来表达系统的功能性需求或行为,依我的理解用例建模可分为用例图和用例描述.用例图由参与者(Actor).用例 (Use Case).系 ...