package day09;
/*
接口的特点:
1、接口是对外暴露的规则。
2、接口是程序的功能扩展。
3、接口的出现降低耦合性。
4、接口可以用来多实现。
5、类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
6、接口与接口之间可以有继承关系。
*/
abstract class AbsDemo{
abstract void show1();
abstract void show2();
}
/**
* 当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,就是接口 interface
*
*
*/
//定义接口使用的关键字不是class,是interface
/**
* 对于接口当中常见的成员:而且这些成员都有固定的修饰符。
* 1、全局常量:public static final
* 2、抽象方法:public abstract
*
* 由此得出结论,接口中的成员都是公共的权限。
*/
interface Demo{
public static final int NUM = 4;
abstract void show1();
abstract void show2();
}
//类与类之间是继承关系,类与接口直接是实现关系。
/**
* 接口不可以实例化
* 只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。否则,这个子类就是一个抽象类。
*
*/
class DemoImpl implements /*实现*/Demo{
public void show1(){
}
@Override
public void show2() {
// TODO Auto-generated method stub
}
}
/**
* 在java中不直接支持多继承,因为会出现调用的不确定性。
* 所以java将多继承机制进行改良,在java中变成了多实现。
* 一个类可以实现多个接口
*/
interface A{
public void show();
}
interface Z{
//public void show();
public int add(int a,int b);
}
class Test implements A,Z{
public void show(){
System.out.print("继承接口 A Z !");
}
public int add(int a,int b){
return a+b+3;
}
}
/*
* 一个类在继承另一个类的同时,还可以实现多个接口。
*/
class Q{
public void method(){}
}
class Test2 extends Q implements A,Z{
@Override
public int add(int a, int b) {
// TODO Auto-generated method stub
return 0;
}
@Override
public void show() {
// TODO Auto-generated method stub
}
}
/*
* 接口的出现避免了单继承的局限性
*/
interface CC{
void show();
}
interface MM{
void method();
}
interface QQ extends CC,MM //接口与接口之间是继承关系,而且接口可以多继承
{
void function();
}
class WW implements QQ{
//覆盖3个方法
public void show(){};
public void method(){};
public void function(){};
}
public class InterfaceDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t = new Test();
t.show();
/* DemoImpl d = new DemoImpl();
//d.NUM = 3;
System.out.println(d.NUM);
System.out.println(DemoImpl.NUM);
System.out.println(Demo.NUM);*/
}
}
/*
接口的特点:
1、接口是对外暴露的规则。
2、接口是程序的功能扩展。
3、接口的出现降低耦合性。
4、接口可以用来多实现。
5、类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
6、接口与接口之间可以有继承关系。
*/
abstract class AbsDemo{
abstract void show1();
abstract void show2();
}
/**
* 当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,就是接口 interface
*
*
*/
//定义接口使用的关键字不是class,是interface
/**
* 对于接口当中常见的成员:而且这些成员都有固定的修饰符。
* 1、全局常量:public static final
* 2、抽象方法:public abstract
*
* 由此得出结论,接口中的成员都是公共的权限。
*/
interface Demo{
public static final int NUM = 4;
abstract void show1();
abstract void show2();
}
//类与类之间是继承关系,类与接口直接是实现关系。
/**
* 接口不可以实例化
* 只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。否则,这个子类就是一个抽象类。
*
*/
class DemoImpl implements /*实现*/Demo{
public void show1(){
}
@Override
public void show2() {
// TODO Auto-generated method stub
}
}
/**
* 在java中不直接支持多继承,因为会出现调用的不确定性。
* 所以java将多继承机制进行改良,在java中变成了多实现。
* 一个类可以实现多个接口
*/
interface A{
public void show();
}
interface Z{
//public void show();
public int add(int a,int b);
}
class Test implements A,Z{
public void show(){
System.out.print("继承接口 A Z !");
}
public int add(int a,int b){
return a+b+3;
}
}
/*
* 一个类在继承另一个类的同时,还可以实现多个接口。
*/
class Q{
public void method(){}
}
class Test2 extends Q implements A,Z{
@Override
public int add(int a, int b) {
// TODO Auto-generated method stub
return 0;
}
@Override
public void show() {
// TODO Auto-generated method stub
}
}
/*
* 接口的出现避免了单继承的局限性
*/
interface CC{
void show();
}
interface MM{
void method();
}
interface QQ extends CC,MM //接口与接口之间是继承关系,而且接口可以多继承
{
void function();
}
class WW implements QQ{
//覆盖3个方法
public void show(){};
public void method(){};
public void function(){};
}
public class InterfaceDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t = new Test();
t.show();
/* DemoImpl d = new DemoImpl();
//d.NUM = 3;
System.out.println(d.NUM);
System.out.println(DemoImpl.NUM);
System.out.println(Demo.NUM);*/
}
}