接口:
比抽象类更加抽象的是接口, 在接口中所有的方法都是抽象的。
package com.test;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Computer computer = new Computer();
Carema camara = new Carema();
Phone phone = new Phone();
computer.Useusb(phone);
computer.Useusb(camara);
System.out.println(Usb.a);
}
}
//创建接口 接口中的方法在类中必须要实现
//接口中的方法只有方法名字,没有主体,类似多态 ,可添加全局变量 ;
//
interface Usb{
//声明两个方法
int a = 50;
public void start();
public void stop();
}
interface usa{
}
//创建类 camara 实现usb接口
//一个重要原则:当一个类实现了一个接口,就要求该类将这个接口的所有方法都实现
//实现多个接口使需要实现多个接口中的所有方法;
class Carema implements Usb,usa {
public void start() {
System.out.println("我是相机,我开始工作了");
}
public void stop() {
System.out.println("我是相机,我停止工作了");
}
}
class Phone implements Usb {
public void start() {
System.out.println("我是手机,我开始工作了");
}
public void stop() {
System.out.println("我是手机,我停止工作了");
}
}
//创建接口调用类
class Computer {
//开始使用USB接口
public void Useusb(Usb usb) {
usb.start();
usb.stop();
}
}
- 接口不能被实例化;
- 接口中的方法都不能有主体;
- 一个类可以实现多个接口;
- 接口中可以有变量;接口中的变量需要被初始化(赋值),默认是static可作为全局变量使用;
- 接口不能继承其他的类,但是可以继承别的接口;
Java的继承是单继承,只能有一个父类:
- 实现接口可以看做是对继承的补充;
- 实现接口可以在不打破继承关系的前提下,对某个类进行扩展,很灵活;
package com.test;
public class Monkey {
public static void main(String[] args) {
// TODO Auto-generated method stub
Littlemonkey sunwukong;
sunwukong = new Littlemonkey();
sunwukong.Jump();
sunwukong.Fly();
sunwukong.Swimming();
}
}
class Oldmonkey{
String name;
int age;
public void Jump() {
System.out.println("Monkey can jump high!!!");
}
}
interface Bird {
public void Fly();
}
interface Fish{
public void Swimming();
}
class Littlemonkey extends Oldmonkey implements Bird,Fish{
@Override
public void Swimming() {
// TODO Auto-generated method stub
System.out.println("monkey learns to swim!!");
}
@Override
public void Fly() {
// TODO Auto-generated method stub
System.out.println("monkey learns to fly!!");
}
}