对Java单继承的弥补——接口
接口主要用来实现多重继承,它是常量和方法的集合,这些方法只有声明没有实现,即接口本身是抽象的,系统默认用abstract修饰。
1.接口的定义:
public interface A{
int A=1;//默认为public static final常量
void displayA();//默认为public abstract抽象方法
}
带默认方法的接口定义:
interface B
{
int B=2;//常量
public void print();//抽象方法
default public void otherprint()//带方法体的默认方法
{
System.out.println(B);
}
}
default方法称为虚拟扩展方法,是指:在接口内部包含一些默认的方法实现,使得接口在进行扩展的时候,不会破坏与接口相关的实现类代码。
2.接口可以实现多重继承:
interface A{
int A=1;
void displayA();
}
interface B{
int B=2;
void displayB();
}
interface C extends A,B{
int C=3;
void displayC();
}
class ABC implements C
{
public void displayA()
{
System.out.println(A);
}
public void displayB()
{
System.out.println(B);
}
public void displayC()
{
System.out.println(C);
}
}
public class T04
{
public static void main(String[] args)
{
ABC a = new ABC();
ABC b = new ABC();
ABC c = new ABC();
a.displayA();
b.displayB();
c.displayC();
}
}
上面的例子中,接口C多继承了接口A和B,类ABC通过实现接口C,同时实现了接口A和B 中的方法,这就是多继承的一种体现。
一个类也可以同时实现几个不同的接口:
class ABC implements A,B,C{}//这行代码和例子中的红色字体效果是一样的
3.接口和抽象类的区别:
接口中只有抽象方法,没有普通方法;接口无构造方法。
接口不能被继承,只能被实现。
上述:public class ABC implements C{}就是类实现接口的方法。
4.接口中定义的常量可以直接用类名访问。
System.out.println(ABC.A);
5.GUI程序事件处理——接口使用一例。
import java.awt.FlowLayout;
import java.awt.event.*;
import javax.swing.*; public class EventDemo extends JFrame implements ActionListener
{
JButton button1 = new JButton("登录");
JButton button2 = new JButton("取消");
JTextField jtf = new JTextField(20);
public EventDemo()
{
add(jtf);
add(button1);
add(button2);
button1.addActionListener(this);//为按钮注册事件监听器
button2.addActionListener(this);
setSize(600,350);
setVisible(true);
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)//实现接口中的抽象方法
{
if((JButton)e.getSource()==button1)
jtf.setText("***");
else
jtf.setText("&&&");
}
public static void main(String[] args)
{
EventDemo frame = new EventDemo();
}
}
对Java单继承的弥补——接口的更多相关文章
- Java实现接口用来弥补Java单继承的缺陷
package com.test3;/** * @author qingfeng * 功能:继承类 VS 实现接口 :两者之间的关系(实现接口用来弥补Java单继承的缺陷) */public clas ...
- Java开发知识之Java的继承多态跟接口*
Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...
- 为什么java的类是单继承的,接口是多继承的
类 如果一个类继承了两个类,但是这两个类中有相同的方法,那么子类调用方法时,无法确定应该调用哪个父类的方法. [c++是多继承的] 接口 jdk1.7 接口可以多继承,是因为当接口中是抽象方法.不存 ...
- Java程序设计8——抽象类、接口与内部类
1 抽象类 当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体.但在某些情况下,某个父类并不需要实现,因为它只需要当做一个模板,而具体的实现,可以由 ...
- Java基础(十)接口(interface)
1.接口的概念 在Java中,接口不是类,而是对类的一组需求描述,这些类要遵从接口描述. 例如:Array类中的sort方法可以对对象数组进行排序,但要求满足下列前提:对象所属的类必须实现了Compa ...
- java 9+版本中,接口的内容总结
java 9+版本中,接口的内容可以有: 1.成员变量其实是常量,格式: [public] [static] [final] 数据类型 常量名称=数据值: 注意: 常量必须进行赋值,而且一旦赋值不 ...
- Java学习笔记:03面向对象-接口_多态
1.类的概念 一堆具有共同的成员变量(属性)和成员方法(功能)对象的集合 2.接口的概念 接口是功能的集合,就是方法的集合 接口中只能定义方法,不能定义普通的成员变量 而且接口中的成员方法,必须是抽象 ...
- java类为什么是单继承。类的继承,实现接口。
java中提供类与类之间提供单继承. 提供多继承会可能出现错误,如:一个类继承了两个父类,而两个父类里面都有show()方法. class Fulei1{ public void show(){ Sy ...
- 对Java不能多继承,只能单继承,却可以实现多个接口的理解
1.java与C++的不同点在于多继承. Java:不能多继承,只能单继承,但可以实现多个接口 C++:可以实现多继承.例如: class A extends B implements C,D,E { ...
随机推荐
- SPOJ GSS1 & GSS3&挂了的GSS5
线段树然后yy一下,搞一搞. GSS1: 题意:求最大区间和. #include <cstdio> #include <algorithm> using namespace s ...
- B - Is your horseshoe on the other hoof?
Problem description Valera the Horse is going to the party with friends. He has been following the f ...
- Spring boot (12) tomcat jdbc连接池
默认连接池 tomcat jdbc是从tomcat7开始推出的一个连接池,相比老的dbcp连接池要优秀很多,spring boot将tomcat jdbc作为默认的连接池,只要在pom.xml中引入了 ...
- halcon 模板匹配 -- find_shape_model
find_shape_model(Image : : //搜索图像 ModelID, //模板句柄 AngleStart, // 搜索时的起始角度 AngleExtent, //搜索时的角度范围, ...
- Python3编写自动签到服务程序
公司加班的餐补需要登录网站签到领取,有时候会忘记,于是自己用Python写了小程序来自动签到.刚开始只是做了自己用,直接写的黑框程序,后来给同事用,就打包成exe.再后来有人说要写成window服务会 ...
- AI:IPPR的模式生成-学习/训练方式(基本结构)
前言: 一个完备的模式识别系统,必然包含一个模式识别模型,此外还要附加一个评价模型,以及为了构建识别模型而构建的学习模型,并选择在学习模型中使用的学习方法. 否则 w=w 这样,)那样 ...
- 【C++】四种排序算法的时间比较
四种排序算法的时间比较 [注]clock函数对输入(用户输入)元素N排序的计时 #include<iostream> #include<time.h> using namesp ...
- Shiro Shiro Web Support and EnvironmentLoaderListener
Shiro Shiro Web Support 主要参考: http://shiro.apache.org/web.html 还有涛哥的 作为资源控制访问的事情,主要使用在网络后台方面,所以了解了本地 ...
- 使用脚本卸载.net framework for mac
官方只提供了安装包,没提供卸载
- 关于MySQL,Oracle和SQLServer的特点以及之间区别
关系型数据库:是指采用了关系模型来组织数据的数据库.简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织. 非关系型数据库:非关系型数据库严格上说不是 ...