文档章节

Java中的接口

柒礼拜
 柒礼拜
发布于 07/12 20:28
字数 969
阅读 4
收藏 0

1.接口概念

接口可以理解为一种特殊的类,有全局常量和公共的抽象方法所组成。

如果说类是一种具体的实现体,而接口定义了某些类所必须遵守的规范,接口不关心这些类的内部数据,也不关心这些类方法的实现细节,只规定这些类里必须提供接口所定义的方法。(这与抽象类很像)

2.接口语法

[修饰符] interface 接口名 [extends 父接口1,父接口2]

{

零到多个常量定义...

零到多个抽象方法的定义...

}

注:接口是用来被继承、被实现的,修饰符一般用public ,也可以不加修饰符,但不能使用private和protected修饰接口;

       接口与抽象类相似,所有接口其实有ababstract关键字,只是系统帮我们省略了,写了也不报错;

       接口可以继承多个父接口,也可以不继承。

3.使用接口

实现接口使用implements关键字(而实现父类使用extends),Java中一个类只能继承一个父类,不够灵活,可以通过实现多个接口做补充。

4.继承父类实现接口的语法

[修饰符] class 类名 extends 父类 implements 接口1,接口2...

{

类体部分

}

举例如下(仔细看测试类中接口的实现方法):

父类

package Java2_4_Practice;
/**
 * 现有Shape图形类,用Circle圆形子类,求图形周长和面积
 * @author qiang
 *
 */
public abstract class Shape {
	public abstract void perimeter(); //抽象定义计算周长的方法
	public abstract void area(); //抽象定义计算面积的方法
}

接口类

package Java2_4_Practice;

public interface IMaxArea {
	public void maxArea();
}

子类(继承父类并实现接口)

package Java2_4_Practice;
/**
 * 现有Shape图形类,用Circle圆形子类,求图形周长和面积
 * @author qiang
 *
 */
import java.util.Scanner;

public class Circle extends Shape implements IMaxArea {
	@Override
	public void perimeter() {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		System.out.println("请输入圆形的半径:");
		float a = input.nextFloat();
		System.out.println("圆的周长为:"+(a*2*Math.PI));
	}

	@Override
	public void area() {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		System.out.println("请输入圆形的半径:");
		float a = input.nextFloat();
		System.out.println("圆的面积为:"+(a*a*Math.PI));
	}

	@Override
	public void maxArea() {
		// TODO Auto-generated method stub
		System.out.println("图形周长相等时,圆形的面积最大!");
	}

}

测试类(仔细看其中接口的实现方法)

package Java2_4_Practice;
/**
 * 现有Shape图形类,用Circle圆形子类,求图形周长,再使用接口
 * @author qiang
 *
 */
public class Test2  {
	
	public static void main(String[] args) {
		
	Shape shape1 = new Circle();//抽象类父类引用子类
	shape1.perimeter();
	
	//使用接口与抽象类是相类似的,用一个接口的引用指向一个实现了接口的对象
	IMaxArea im1 = new Circle();
	im1.maxArea();
	
	
	/*
	 * 实现接口还可以有如下两种方法,其中的接口方法自行编译
	 */
	//方法1:接口引用指向new一个新接口,然后编译方法,再用new的接口调用方法
	IMaxArea im2 = new IMaxArea(){

		@Override
		public void maxArea() {
			// TODO Auto-generated method stub
			System.out.println("1使用匿名内部类的方式实现接口");
		}
		
	};
	im2.maxArea();
	
	//方法2:直接new一个接口,然后编译方法,最后花括号加.调用方法
	new IMaxArea() {
		
		@Override
		public void maxArea() {
			// TODO Auto-generated method stub
			System.out.println("2使用匿名内部类的方式实现接口");
		}
	}.maxArea();
	
	

	}
}

运行结果:

请输入圆形的半径:
3
圆的周长为:18.84955592153876
图形周长相等时,圆形的面积最大!
1使用匿名内部类的方式实现接口
2使用匿名内部类的方式实现接口

 

© 著作权归作者所有

柒礼拜
粉丝 0
博文 33
码字总数 8390
作品 0
九江
私信 提问
【目录导航】JAVA零基础进阶之路

【JAVA零基础入门系列】(已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day6 Java字符串 Day7 Java输入与输出...

MFrank
2018/06/21
0
0
什么是Java语言?java语言简介

Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的W...

阿秀a
2010/10/19
0
0
JAVA接口的概念、分类及与抽象类的区别

Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(...

郭二翔
2011/12/17
0
0
Eclipse 远程调试 Java 程序

今天同事问我怎么远程调试 java 程序。我不会,那马上搜索看看。在被高度的程序中加个数据就行。然后 eclipse 调试时指定端口就行,太方便了。 比如,现在有一个代码: 把这个java 导出为 re...

鉴客
2010/08/05
1K
1
1.3.2 java程序的运行机制和jvm

java语言比较特殊,由java语言编写的程序需要经过编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(也就是*.class文件)。当然,这种字节码不是可执行...

Gooiem
2015/08/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

php 遇到 No input file specified的解决方法

(一)IIS Noinput file specified 方法一:改PHP.ini中的doc_root行,打开ini文件注释掉此行,然后重启IIS 方法二: 请修改php.ini 找到 ; cgi.force_redirect = 1 去掉前面分号,把后面的1...

chenhongjiang
今天
5
0
MySQL 基础

一、常用命令 在命令行中,配置好环境变量后,通过cmd可以直接进入mysql命令行模式,同时列举几种常用命令 # 进入mysql数据库,密码可以先不写,打完-p后再输入,防止被别人看到mysql -u账...

华山猛男
今天
6
0
简单的博客系统(四)Django请求HTML页面视图信息--基于函数的视图

1. 编写用于查询数据的功能函数 应用目录 下的 views.py 文件通常用于保存响应各种请求的函数或类 from django.shortcuts import renderfrom .models import BlogArticles# Create your ...

ZeroBit
今天
5
0
用脚本将本地照片库批量导入到Day One中

因为目前iCloud 空间已经不足,其中95%都是照片,之前入手了DayOne,且空间没有限制,订阅费一年也不少,再加上DayOne作为一款日记App 也比较有名,功能方面最大的就是地理视图与照片视图,尤...

在山的那边
昨天
21
0
jupyter部署安装

python373 -m ipykernel install --name python373 ipython kernelspec list sc create myjupyterservice binpath="D:\apply\Python373\Scripts\jupyter-notebook --config=V:/my_work/jupyt......

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部