Interface, 接口的实现初解
百度是这么说的:
public interface I_cpu {
public void yunsuan();
public String getPinpai();
}
public interface I_display {
public void xianshi();
public String getPinpai();
}
public interface I_longx extends I_cpu, I_display {
public void cunchu();
public String yingpan = null;
public String yingpan();
}
上面定义了三个接口, 用组装电脑来简单举个例子, 在写接口的时候要注意以下几点(非常重要)
1, 接口中只需要写方法或者属性, 方法不需要写方法体, 只需要写个public void yunsuan();这玩意就行了, 方法体在后面实体类里面写
2, 接口中定义的方法, 只能使用public和abstract来修饰, 不能使用private或是protect
3, 接口中可以定义属性, 但是定义的属性会默认有这几个关键字——Public, Final, Abstract
4, 接口中定义的属性,必须初始化, 就是必须赋初始值
5, 如果一个类引用了两个或者多个接口, 必须包含所引用接口的所有属性和方法
下面是定义的三个类, 这三个类分别是继承了接口; 继承了两个接口, 继承了一个接口, 但是这个接口又继承了两个接口:
public class Intel implements I_cpu {
@Override
public void yunsuan() {
// TODO Auto-generated method stub
System.out.println("Intel正在运算...");
}
@Override
public String getPinpai() {
return "Intel";
}
}
public class AMD_Display implements I_cpu, I_display {
@Override
public void xianshi() {
System.out.println("显示图形图像");
}
@Override
public void yunsuan() {
System.out.println("带显卡的CPU正在运算...");
}
@Override
public String getPinpai() {
return "CPU&DISPLAY";
}
}
public class Longxin implements I_longx {
@Override
public void yunsuan() {
System.out.println("龙芯正在运算...");
}
@Override
public String getPinpai() {
return "龙芯";
}
@Override
public void xianshi() {
System.out.println("show picture");
}
@Override
public void cunchu() {
System.out.println("save data");
}
@Override
public String yingpan() {
return "冠捷硬盘";
}
}
这样再写一个实现类, 就可以使用这些类和接口了
public class Run {
//实现通过接口定义的方法
public static void main(String[] args) {
//组装第一台电脑
Computer c1 = new Computer();
Intel cpu = new Intel();
c1.setCpu(cpu);
//直接实例化赋值的叫匿名对象
c1.setDisplay(new Display());
c1.run();
System.out.println();
//组装第二台电脑
Computer c2 = new Computer();
c2.setCpu(new AMD());
c2.setDisplay(new Display());
c2.run();
System.out.println();
//组装第三台电脑
Computer c3 = new Computer();
c3.setAd(new AMD_Display());
c3.setLx(new Longxin());
c3.Run();
}
}

抽象类和抽象方法
在定义类的过程中难免会遇到一种情况, 一个类里面有一个方法没法实现, 但是这个方法又不能舍弃, 这时候就可以使用抽象方法(abstract)
public abstract class Longxin implements I_longx {
......
public abstract void xianshi();
......
}
注意: 在一个类里面, 如果有一个方法变成了抽象方法, 那么这个类也必须定义成抽象类(即加上关键字abstract)
这个抽象类再使用的时候就要用另一个类来继承它, 在另一个类里面定义这个抽象方法的方法体
public class Longxin2 extends Longxin {
@Override
public void xianshi() {
System.out.println("Longxin2的xianshi方法");
}
}
实现类中的代码改成这样, 重新实例化Longxin类, 就可以正常调用方法了
Computer c3 = new Computer();
Longxin lx = new Longxin2();
c3.setLx(lx);
c3.Run();
Interface, 接口的实现初解的更多相关文章
- as3.0 interface接口使用方法
[转]as3.0 interface接口使用方法 AS在2.0的时候就支持接口了 接口能够让你的程序更具扩展性和灵活性,打个例如 比方你定义了一个方法 代码: public function aMet ...
- interface接口
当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,就是接口 interface. 定义接口使用的关键字不是class,是interface.接口中常见的成员: 这些成员都有 ...
- golang面向对象和interface接口
一. golang面向对象介绍 1.golang也支持面向对象编程,但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言.2.golang没有类(class),golang语言的结合体(struc ...
- Golang 入门系列(四)如何理解interface接口
前面讲了很多Go 语言的基础知识,包括go环境的安装,go语言的语法等,感兴趣的朋友,可以先看看之前的文章.https://www.cnblogs.com/zhangweizhong/category ...
- go interface接口
一:接口概要 接口是一种重要的类型,他是一组确定的方法集合. 一个接口变量可以存储任何实现了接口方法的具体值.一个重要的例子就是io.Reader和io.Writer type Reader inte ...
- java interface接口的传值方法
A 类 package interface_test; public class A { private IPresenter ip; public A(IPresenter ip) { this.i ...
- JAVA 构造器, extends[继承], implements[实现], Interface[接口], reflect[反射], clone[克隆], final, static, abstrac
记录一下: 构造器[构造函数]: 在java中如果用户编写类的时候没有提供构造函数,那么编译器会自动提供一个默认构造函数.它会把所有的实例字段设置为默认值:所有的数字变量初始化为0;所有的布尔变量设置 ...
- 011-对象——interface接口说明与使用方式实例
<?php /** interface接口说明与使用方式实例 * * 接口里面的方法全是抽象方法,没有实体的方法.这样的类我们就叫做接口.定义的时候用Interface定义.实现接口时用impl ...
- Java Interface接口
Java 中接口概念 接口可以理解为一种特殊的 类,由 全局常量 和 公共的抽象方法 所组成. 类是一种具体实现体,而接口定义了某一批类所需要遵循的规范,接口不关心这些类的内部数据, 也不关心这些类里 ...
随机推荐
- javascript中有关this的解析题
1.作用域链 作用域:浏览器给js一个生存环境(栈)内存 作用域链:js中的关键字var function 都可以提前声明和定义,提前声明和定义,放在我们的内存地址(堆)内存中,然后js从上到下逐行执 ...
- Oracle创建数据库链接
**********创建数据库链接******************create public database link link_gzzl connect to system identifie ...
- iOS TTF文件改变字体
TTF(True Type Font):是一种字库名称 TTF文件:是Apple公司和Microsoft公司共同推出的字体文件格式 使用: 1 获取字体文件 从各种渠道下载字体ttf,网站或从别的ip ...
- PHP 算术运算符
PHP 算术运算符 运算符 名称 描述 实例 结果 x + y 加 x 和 y 的和 2 + 2 4 x - y 减 x 和 y 的差 5 - 2 3 x * y 乘 x 和 y 的积 5 * 2 1 ...
- solr之~模糊查询
有的时候,我们一开始不可能准确地知道搜索的关键字在 Solr 中查询出的结果是什么,因此,Solr 还提供了几种类型的模糊查询.模糊匹配会在索引中对关键字进行非精确匹配.例如,有的人可能想要搜索某个前 ...
- JavaScript字符串练习
题目: 预备代码: // 自定义输出 var log = function () { console.log.apply(this, arguments); }; // ====== // 测试 // ...
- python urlretrieve 下载图片
python 3中urlretrieve方法直接将远程数据下载到本地.为什么不行? 55 import re import urllib.request def getHtml(url): page ...
- 7. myeclipse10反编译插件安装
- mysql闯关练习
1.表关系 班级表:class 学生表:student cid caption grade_id sid sname gender clas ...
- delegate() 事件绑定 事件委托
定义和用法 delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数. 使用 delegate() 方法的事件处理程序适用于当前或未来 ...