Touch_Java 6:接口和多态
2017-10-18 14:42
302 查看
一、接口
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
接口的继承
接口可以被继承,即可以通过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类中可以有常量、变量,抽象方法,非抽象方法而接口中只有常量和抽象方法
在选择时,如果程序不需要继承变量,只需要实现某些方法,则选择接口
如果需要继承父类一些方法和变量,则可以考虑抽象类
相关文章推荐
- java学习(6)-继承,多态,抽象类以及接口
- java学习笔记之抽象类,接口,多态
- java详解final、多态、抽象类、接口原理
- All About JAVA 继承、多态、抽象类、接口、面向接口编程
- Java基础学习笔记09——(final关键字,多态,抽象类,接口)
- java 面向对象 接口与多态
- java第八节-多态,抽象类,接口
- 我们神码小组第一次合作完成的java项目——类的多态继承与接口的使用练习。
- JAVA中如何用接口实现多继承和多态 (非常好)
- Java对象多态和接口
- Java核心之接口、继承与多态
- 学习笔记——Java核心技术之接口、继承与多态练习题
- JAVA基础知识:面对对象特性【继承】【 多态】【 封装】【 接口】
- 黑马程序员-17-java基础-面向对象(3)-继承、抽象类、接口与多态
- java 学习总结(二) 类的接口、继承与多态
- Java之接口和多态
- java进阶3——接口和多态
- 重踏学习Java路上_Day09(final,多态,抽象类,接口)
- java面向对象之接口与多态
- Java中 关键字final,抽象类abstract, 接口interface ,多态