Touch_Java 6:接口和多态
来源:互联网 发布:办公软件高级应用 编辑:程序博客网 时间:2024/06/06 03:02
一、接口
java不支持多继承性,因此一个类只有一个父类
单继承性,使java更简单,易于管理和维护
1. 接口的声明和使用
接口的定义分为接口的声明和接口体
interface name
{
abstract show_name();
}
(1)接口的声明
第一行语句叫做接口的声明,
interface 接口名
(2)大括号内的语句称为接口体
接口体内包括常量的声明和接口方法的定义
接口中的常量都是访问权限为public的static常量,不能含有变量
(可以省略public static final修饰符)
接口中的方法都是抽象方法,只允许声明,不允许实现
例如上例中类体中的抽象方法:abstract show_name();只有这一行语句,不允许实现方法
(3)接口的使用
在java中,由类实现接口,用来实现接口中的方法,一个类可以实现多个接口
用implements引入要实现的接口,两个以上的接口用逗号间隔开
例如类A实现B,C接口,则声明类时应该这样写:
public class A implements B,C
{
}
如果A的子类a实现B,C接口,写法如下
public class a extends A implements B,C
{
}
如果一个类实现了一个接口,则这个类必须重写这个接口中的所有抽象方法
重写接口中方法时,方法的访问权限一定要是public,否则降低了方法的访问权限
(4)引入类库中的接口
通过import关键字引入类库时,也同时引入了类库中的接口
因此在定义类时,可以直接调用接口,然后在类中实现
二、接口使用例子
简单例子,求1-100的和
接口的代码:
package suchafool;public interface methods {int sum();}
实现接口的类的代码:
package suchafool;public class Main implements methods //引入接口{int sum_ = 0;public int sum()//重写接口中的方法{for(int i=0; i<=100; i++)//1-100求和sum_ += i;return sum_;} public static void main(String []args)//main方法,不建议这样写,可以重新建一个类实现main方法,并进行测试 { Main main = new Main(); System.out.println("1-100的和为:"+main.sum()); }}
运行结果:
1-100的和为:5050
注意:
类重写的接口中的方法以及接口中的常量,都可以被该类创建的对象调用
比如上述例子中接口可以加一行语句
final int x = 1;
然后在主类中加一行语句
System.out.println(methods.x);
接口中的常量也可以通过接口名直接调用
接口的修饰符:
如果在声明接口时,在interface前加public修饰符,则该接口可以被任何类实现
如果不加,则称该接口为友好接口类,只能被在同一个包中的类实现
如果父类实现了某个接口,则子类不用明显的声明和实现接口
如上例中:
可以新建一个Main的子类
package suchafool;public class mains extends Main//实现了methods接口类的子类{public int s(){return sum();//返回从父类继承的、父辈已经实现的接口中的方法}}
同时在Main类中添加一下语句进行测试
mains s = new mains(); System.out.println("子类调用接口中的方法输出结果为:"+s.s());
运行结果
1-100的和为:5050
1
子类调用接口中的方法输出结果为:5050
1
子类调用接口中的方法输出结果为:5050
接口的继承
接口可以被继承,即可以通过extends,声明一个接口为是另一个接口的子接口
由于父接口中的方法和常量都是public修饰的,因此子接口可以全部继承
如果一个类实现了一个接口,却没有实现接口中的抽象方法,则这个类必须是抽象类
使该接口变量可以调用类实现的接口方法
步骤: 声明一个接口变量
将实现接口类创建对象的引用赋值给接口变量
接口变量调用类中实现了接口中的方法
即完成接口回调过程
理解接口回调:
接口回调的定义:
把实现某一接口类创建对象的引用赋值给该接口创建的接口变量使该接口变量可以调用类实现的接口方法
步骤: 声明一个接口变量
将实现接口类创建对象的引用赋值给接口变量
接口变量调用类中实现了接口中的方法
即完成接口回调过程
例子:
接口代码:
interface compute //定义一个接口{abstract int add();//声明一个抽象方法,abstract修饰符可以省略}
实现接口类:
class Test_interface implements compute//实现compute接口{public int add()//重写接口中的add方法{int sum = 0;for(int i = 0;i<11; i++)sum += i;return sum;}public static void main(String[] args) {compute com;//声明一个接口变量com = new Test_interface();//将实现接口的类Test_interface创建对象的引用赋值给接口变量com.add();//接口变量调用类中实现的接口方法System.out.println(com.add());//输出结果}}
55
接口的多态性:
由于不同类实现接口有不同的方式,因此接口在回调时,就有多种选择,
因此接口变量就有多种形态,称为接口的多态
abstract类和接口区别
abstract类中可以有常量、变量,抽象方法,非抽象方法
而接口中只有常量和抽象方法
在选择时,如果程序不需要继承变量,只需要实现某些方法,则选择接口
如果需要继承父类一些方法和变量,则可以考虑抽象类
阅读全文
1 0
- Touch_Java 6:接口和多态
- Touch_Java 4:类和对象
- Touch_Java 5:子类和继承
- Touch_Java 7:数组和枚举
- Touch_Java 8:内部类和异常类
- 接口和多态
- 接口和多态
- 6/21:抽象,多态和接口
- 多态和接口示例
- java多态和接口
- 4,多态和接口
- 接口,继承和多态
- 接口继承和多态
- 多态和接口实例
- 关于接口和多态
- java接口和多态
- Touch_Java 10:输入、输出流
- BREW接口的继承和多态
- RxBus-mvp模式下对Rxjav的封装(二)
- MFC IP Control
- springboot中rabbitmq集成——单项目
- PLsql调试 存储过程
- pycharm常用设置和用法
- Touch_Java 6:接口和多态
- uses-permission和permission的区别
- Centos 7 Mysql数据库安装配置
- sql拼接问题解决
- Maven deploy 操作:Return code is: 401和400错误
- Iptables netstat 防御简单dos攻击
- Android之andfix使用说明
- hdu 1978 How many ways
- 从头到尾彻底解析哈希表算法