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 中接口概念 接口可以理解为一种特殊的 类,由 全局常量 和 公共的抽象方法 所组成. 类是一种具体实现体,而接口定义了某一批类所需要遵循的规范,接口不关心这些类的内部数据, 也不关心这些类里 ...
随机推荐
- BASIC-6_蓝桥杯_杨辉三角形
示例代码: #include <stdio.h>#include <stdlib.h> int main(void){ int n = 0 ; int i = 0 , j = ...
- JMS概念
来自为知笔记(Wiz)
- java学习——类之YuanZhu
package hello; import java.util.Scanner; public class YuanZhu { public static void main(String[] arg ...
- [转]C# 系统应用之鼠标模拟技术及自动操作鼠标
原文网址: C# 系统应用之鼠标模拟技术及自动操作鼠标 游戏程序的操作不外乎两种——键盘输入控制和鼠标输入控制,几乎所有游戏中都使用鼠标来改变角色的位置和方向,本文主要是讲述如何使用C# ...
- Linux中make, make install命令分别是什么
用于linux源码安装软件,一般下载源码包得到文件:xxxx.tgz====================================1.解包软件 tar zxf xxxx.tgz======= ...
- javascript的事件流
事件流包括三个阶段: 1.事件捕获阶段 2.处于目标阶段 3.事件冒泡阶段 1.事件捕获阶段 现在页面中有一个按钮. 如果单击这个按钮的话,在事件捕获过程中,document会首先接收到click事件 ...
- Java 泛型小结
1.什么是泛型? 泛型(Generics )是把类型参数化,运用于类.接口.方法中,可以通过执行泛型类型调用 分配一个类型,将用分配的具体类型替换泛型类型.然后,所分配的类型将用于限制容器内使用的值, ...
- python写一个简单的CMS识别
前言: 收集了一点cms路径,打算在写一个.之前已经写了 有需要的可以自己翻我的博客 思路: 网站添加路径判断是否为200,并且无过滤列表中的字符 代码: import requests import ...
- RNN循环神经网络结构
note: RNN处理有序的数据.例如一句话 一层双向的循环神经网络示意图(没有 S0' 则为单层循环): 正向循环S0 到 Si:y1的值受X1,A1以及上一层的A0影响 反向循环Si 到 S0:y ...
- TCP/IP协议和IP
理解 使用网络能够把多方链接在一起,然后可以进行数据传递 所谓的网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信 tcp/ip简介 1. 什么是协议 有的说英语,有的说中文,有的 ...