1.接口(使用interface)

本文介绍了Java接口的使用,包括接口的定义、接口与类的关系以及接口与抽象类的异同点。通过示例展示了如何定义和实现接口,并指出接口在Java中的重要性,特别是在弥补单继承局限性方面的应用。
摘要由CSDN通过智能技术生成

概述: 有时候需要从几个类中派生出一个子类,继承他们的所有属性和方法.但是,java不支持多重继承.于是就引入接口,解决这样的问题.
有时候必须从几个类中抽取一些共同的行为特征,而他们之间又没有is-a 的关系,仅仅是具有相同的行为特征.如 ; MP3 手机和数码相机等等都支持USB连接.

接口使用;
1.接口使用interface 来定义
2.Java中,接口和类是并列的两个结构
3.如何定义接口.定义接口中的成员.(接口中主要只有全局变量和抽象方法.无法实列化.)

                                3.1 JDK7及以前;只能定义全局常量和抽象方法(大学主要谈论此版本)
                                         > 全局常量; public  static   final 的  //书写时可以省略
                                         >  抽象方法; public  abstract  的
                                3.2  JDK8以后;  除了定义全局常量和抽象方法之外,还可以定义静态方法,默认方法 .
                   4.接口中不能定义构造器.接口就不能实例化..
                   5.java开发中,接口都是通过类去实现(implements).
                                如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以实列化..
                                      如果实现类没有覆盖接口三中所有抽象方法,则此实现类认为一个抽象类.
                                                 接口中的东西都可以通过接口名调用         
                                                 package com.helloworld.demo2;

public class InterfaceTest {
public static void main(String[] args) {
System.out.println(Flyable.Max_Speed);
Plan plan = new Plan();
plan.fly();
}

}

//接口
interface Flyable{
//全局常量也可以省略写; int Max_Speed=7900;

public static  final int Max_Speed=7900;
public static final  int Min_Speed=1;

//抽象方法;  也可以省略写;    void   fly();
 public abstract void fly();
 void stop();

}

class Plan implements Flyable{

@Override
public void fly() {
	// TODO Auto-generated method stub
	System.out.println("通过迎请起飞");
}

@Override
public void stop() {
	// TODO Auto-generated method stub
	System.out.println("停止");
}

class Kite  implements Flyable{

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void stop() {
		// TODO Auto-generated method stub
		
	}
	
}

}

接口与接口之间是可以多继承的.

面试题: 抽象类与接口有哪里异同?
接口与抽象类的相同点
被实例化。
接口的实现类或者抽象类的子类都是实现了接口或者抽象类中的方法后才能被实例化。

接口与抽象类的不同点
接口只有定义,方法不能在接口中实现,只有实现接口类才能实现接口中定义的方法,而抽象类可以定义与实现,方法也是可以在抽象类中被实现。
接口需要关键字implement来实现,但是抽象类只能被继承(用extend)。一个类可以实现多个接口,但是一个类只能继承一个抽象类,因此实现多个接口间接的达到多重继承。
接口强调特定功能的实现,设计理念是 has -a 关系,而抽象类强调is -a。
接口中定义的成员变量默认public static final 。必须赋值,抽象类中可以定义自己的数据成员变量,也可以有非抽象的成员方法。这些成员变量可以在子类重新新定义,也可以重新赋值。
接口运用比较常用,便于日后的维护 或者添加删除。而抽象类更倾向于充当公共的角色,不适合日后的对里面代码的修改。

  1. Java类可以实现多个接口,----> 弥补了Java单继承性的局限性.
    格式;class A extends 父类 implement c ,d,e…

               //接口
    

interface Flyable{
//全局常量
public static final int Max_Speed=7900;
public static final int Min_Speed=1;

//抽象方法
 public abstract void fly();
 void stop(); 

}
interface Attackable{
public static final int max=100;
public void attack();
}

// 一个类可以实现多个接口

class Bullet extends AtomicBoolean implements Flyable,Appendable{

@Override
public Appendable append(CharSequence csq) throws IOException {
	// TODO Auto-generated method stub
	return null;
}

@Override
public Appendable append(CharSequence csq, int start, int end) throws IOException {
	// TODO Auto-generated method stub
	return null;
}

@Override
public Appendable append(char c) throws IOException {
	// TODO Auto-generated method stub
	return null;
} 	

@Override
public void fly() {
	// TODO Auto-generated method stub
	
}

@Override
public void stop() {
	// TODO Auto-generated method stub
	
}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值