JAVA接口与多态
来源:互联网 发布:遵义广电网络收费标准 编辑:程序博客网 时间:2024/05/18 03:03
接口
可以理解为一种特殊的类,里面全部是由全局常量(static final)和公共的抽象方法所组成
接口的定义格式
private static finalint var1=1; //error
public static final int var2 = 2;
public abstract void fun1();
private abstractint fun2(); //error.
public String name = “小明”;
public void print();
public String getName();
public void setName();
public void print( ) { ……};
public String getName( ) {……};
public void setName( ) {……};
//public void print( ) { ……}; //没覆写print方法,编译不过。
public String getName( ) {……};
public void setName( ) {……};
对象转型
public class Test implements A{
intidx = 1;
public void print(){
System.out.println(“”)
}
public String getName(){
}
public static void main(String []agrs){
Test test = new Test();
A a = (A)test; //对象转型为接口类型
System.out.println(a.name); //输出name的值
a.idx = 2; //error. idx属于test,在接口A中不存在
a.print(); //执行Test的print方法。
}
}
继承抽象类实现接口
接口的继承
接口与继承的区别
No.
区别
抽象类
接口
1
定义
以abstract声明,抽象方法可有可无。
以interface声明,由静态常量和抽象方法组成。
2
组成
构造方法、抽象方法、普通方法、常量、变量
静态常量、抽象方法
3
使用
子类继承抽象类(extends)
子类实现接口(implements)
4
关系
抽象类可以实现多个接口
接口不能继承抽象类,但允许继承多个接口
5
对象
都通过对象的多态性产生实例化对象
6
局限
抽象类有单继承的局限
接口可以实现多重继承
7
选择
如果抽象类和接口都可以使用的话,优先使用接口,可以避免单继承的局限
多态
public class A{
String name = “A”;
public void fun1(){
System.out.println(“A->fun1”);
}
public void fun2(){
System.out.println(“A->fun2”);
}
}
public class B extends A{
String name = “B”;
public void fun1(){
System.out.println(“B->fun1”);
}
public void fun3(){
System.out.println(“B->fun3”);
}
}
向上转型:
public class Demo{
public static void main(String args[]){
A a = new B( );
a.fun1(); //输出什么? B->fun1
a.fun2(); //输出什么? A->fun2
a.fun3(); //error. A中没定义fun3方法
System.out.println(a.name); //输出什么?
}
}
public class Demo{
public static void main(String args[]){
//B b = (B)new A( ); //强制转型,运行后抛出异常
A a = new B();
B b = (B)a; //向下转型
b.fun1(); //输出什么? A->fun1
b.fun2(); //输出什么? A->fun2
b.fun3(); //输出什么? B->fun3
}
}
多态的目的
应用实例
public abstract class Driver{
public Driver( ) { }
public abstract void drives( );
}
public class FemaleDriver extends Driver {
public FemaleDriver( ) { }
public void drives( ) {
System.out.println("A Female driver drives a vehicle.");
}
}
public class MaleDriver extends Driver {
public MaleDriver( ) { }
public void drives( ) {
System.out.println("A Male driver drives a vehicle.");
}
}
public class Test{
public static void main(String [ ] args){
Driver a = new FemaleDriver( );
Driver b = new MaleDriver( );
a.drives( );
b.drives( );
}
}
输出结果:A Female driver drives a vehicle.
A Male driver drives a vehicle.
public class MaleDriver extends Driver {
public MaleDriver( ) { }
public void drivesBus( ) {
System.out.println("A Male driver drives abus.");
}
public void drivesCar( ){
System.out.println("A Male driver drives acar.");
}
public void drivesTruck( ){
System.out.println("A Male driver drives atruck.");
}
……
}
输出结果: A Male driver drives abus
- JAVA接口与多态
- java接口与多态
- Java--继承与多态,抽象编程,接口与多态,接口回掉接口编程
- Java中接口与多态
- java接口继承与多态
- java 面向对象 接口与多态
- Java学习笔记--接口与多态
- java----多态与接口知识点
- Java继承、接口与多态
- Java 接口、集成与多态
- Java接口与多继承
- java--抽象类与接口,继承与多态
- java之多态与抽象与接口!!!
- 接口与实现:接口回调与接口多态
- 多态与接口
- 接口与多态
- 接口与多态
- 接口与多态
- 【人在运维囧途_04】 逃离故障的十条运维工作经验总结
- 单片机驱动DM9000网卡芯片
- Python装饰器与面向切面编程
- 过滤Android工程中多余的资源文件
- UVA 11389 The Bus Driver Problem(贪心)
- JAVA接口与多态
- SQL语法 TOP
- wireshark提供的一组API以供抓包和包分析
- 双击startup.bat启动tomcate时,一闪而过然后消失了
- ORACLE 11R2 安装过程。
- Handler
- eclipse无法正常启动解决方案
- 如何在需要的时候通过命令行触发事件来运行SSRS的报表订阅
- 卢松松:周一的文章最难写 晚上发文最合适