博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对Java单继承的弥补——接口
阅读量:6197 次
发布时间:2019-06-21

本文共 2452 字,大约阅读时间需要 8 分钟。

接口主要用来实现多重继承,它是常量和方法的集合,这些方法只有声明没有实现,即接口本身是抽象的,系统默认abstract修饰。

1.接口的定义:

1 public interface A{2     int A=1;//默认为public static final常量3     void displayA();//默认为public abstract抽象方法4 }

带默认方法的接口定义:

1 interface B2 {3     int B=2;//常量4     public void print();//抽象方法5     default public void otherprint()//带方法体的默认方法6     {7         System.out.println(B);8     }9 }

default方法称为虚拟扩展方法,是指:在接口内部包含一些默认的方法实现,使得接口在进行扩展的时候,不会破坏与接口相关的实现类代码。

2.接口可以实现多重继承:

1 interface A{ 2     int A=1; 3     void displayA(); 4 } 5 interface B{ 6     int B=2; 7     void displayB(); 8 } 9 interface C extends A,B{10     int C=3;11     void displayC();12 }13 class ABC implements C14 {15     public void displayA() 16     {17         System.out.println(A);18     }19     public void displayB() 20     {21         System.out.println(B);22     }23     public void displayC()24     {25         System.out.println(C);26     }27 }28 public class T0429 {30     public static void main(String[] args)31     {32         ABC a = new ABC();33         ABC b = new ABC();34         ABC c = new ABC();35         a.displayA();36         b.displayB();37         c.displayC();38     }39 }

上面的例子中,接口C多继承了接口AB,类ABC通过实现接口C,同时实现了接口AB 中的方法,这就是多继承的一种体现。

一个类也可以同时实现几个不同的接口:

class ABC implements A,B,C{}//这行代码和例子中的红色字体效果是一样的

3.接口和抽象类的区别:

  接口中只有抽象方法,没有普通方法;接口无构造方法。

  接口不能被继承,只能被实现。

  上述:public class ABC implements C{}就是类实现接口的方法。

4.接口中定义的常量可以直接用类名访问。

System.out.println(ABC.A);

5.GUI程序事件处理——接口使用一例。

1 import java.awt.FlowLayout; 2 import java.awt.event.*; 3 import javax.swing.*; 4  5 public class EventDemo extends JFrame implements ActionListener 6 {     7     JButton button1 = new JButton("登录"); 8     JButton button2 = new JButton("取消"); 9     JTextField jtf = new JTextField(20);10     public EventDemo()11     {12         add(jtf);13         add(button1);14         add(button2);15         button1.addActionListener(this);//为按钮注册事件监听器16         button2.addActionListener(this);17         setSize(600,350);18         setVisible(true);19         setLayout(new FlowLayout());20         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);21     }22     public void actionPerformed(ActionEvent e)//实现接口中的抽象方法23     {24         if((JButton)e.getSource()==button1)25             jtf.setText("***");26         else27             jtf.setText("&&&");28     }29     public static void main(String[] args)30     {31        EventDemo frame = new EventDemo();32     }33 }

 

转载于:https://www.cnblogs.com/wxywxy/p/6724590.html

你可能感兴趣的文章
.Net Framework
查看>>
633E Binary Table
查看>>
C++ 顺序容器(vector,list、deque,stack,queue)
查看>>
【LeetCode每天一题】Flatten Binary Tree to Linked List(二叉树转化为单链表)
查看>>
关于路由跟踪指令---traceroute
查看>>
mycat实例(2)
查看>>
Spring Boot干货系列:(一)优雅的入门篇
查看>>
python学习笔记(十)常用模块
查看>>
8.4、文件的处理、指针、锁定操作
查看>>
布局与兼容性
查看>>
Linux下SSH Session复制
查看>>
关于httpservletrequest的获取真实的ip
查看>>
Spring Boot的启动器Starter详解
查看>>
Linux(Centos)中tcpdump参数用法详解(转)
查看>>
异步并行批处理框架设计的一些思考(转)
查看>>
查找正序排列的List中缺失的日期数据的一个算法
查看>>
.NET MVC TempData、ViewData、ViewBag
查看>>
(3.1)用ictclas4j进行中文分词,并去除停用词
查看>>
[链接地址] Kibana汉化
查看>>
去掉谷歌浏览器获取焦点时默认的input、textarea的边框和背景
查看>>