Java中有关接口(interface)的笔记

** 接口:
1、接口是一种引用数据类型。类和类之间叫做继承extends,类和接口之间叫做实现implements。
2、接口是完全抽象的(抽象类是半抽象),或者接口是特殊的抽象类。
3、接口的定义、语法:

  •       【修饰符列表】 interface 接口名{ }
    

4、接口支持多继承,一个接口可以继承多个接口,一个类可以实现多个接口。
5、接口中只包含两部分内容,一部分是常量,一部分是抽象方法,就没有其他内容了。
6、接口中所有元素都是public修饰的。
7、接口中的抽象方法定义时:public abstract修饰符可以省略。
8、接口的方法都是抽象方法,没有方法体。
9、接口中常量中的public static final可以省略。
10、当一个非抽象类实现接口时,必须将接口中的所有抽象方法全部实现(覆盖、重写)。

*第一个代码示例:

 public class JiekouTest01 {

    public static void main(String [] args){
        // new Mymath();//error,接口是抽象的,不能实例化

        Mymath mm=new MyImpl();//MyImpl为非抽象类,可以实例化,可以用多态
        int resulat1=mm.sub(6);
        int resulat2=mm.sum(1,2);
        System.out.println(resulat1);
        System.out.println(resulat2);
    }    
}
interface JieKou1{

}
interface JieKou2{

}
//一个接口可以继承多个接口
interface CC extends JieKou1,JieKou2{
}

interface Mymath{

    public abstract int sum(int a,int b);
    int sub(int d);//public abstract可以省略

    public static final double PI=3.1415926;//常量
    double pi=3.1415926;//public static final可以省略
    int sb=0;

}
class MyImpl implements Mymath{
    //MyImpl类是非抽象类,需要重写/覆盖/实现接口Mymath中的方法
    @Override
    public int sum(int a, int b) {
        
        return a+b;
    }

    @Override
    public int sub(int d) {
        return 0;
    }  
}
abstract class MM implements Mymath{//MM为抽象类,没问题,编译没问题

}
  • 继承和实现都存在的情况下,extends关键字在前,implements关键字在后。

*第二个代码示例:

public class JiekouTest03 {
    public static void main(String [] args){
        Flyable f=new Cat1();
        f.fly();
        f.eat();
        Flyable f1=new Pig();
        f1.fly();
    }
    
}
class Animal2{
    public void eat(){
        System.out.println("吃吃吃");
    }

}
interface Flyable{
    void fly();

    void eat();
}
class Cat1 extends Animal2 implements Flyable{

    @Override
    public void fly() {
        System.out.println("猫fly!");
    }
    
}

class Pig extends Animal2 implements Flyable{

    @Override
    public void fly() {
        System.out.println("天上掉下个猪八戒");  
    }
    
}
猫fly!
吃吃吃
天上掉下个猪八戒
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 静态代理是一种常见的设计模式,其主要思想是通过一个代理对象来控制对真实对象的访问,从而增强真实对象的功能或者限制对真实对象的访问。 静态代理的实现需要创建一个代理类和一个真实对象类,代理类和真实对象类都实现同一个接口或者继承同一个父类,代理类持有真实对象的引用,在代理类的方法调用真实对象的方法并对其进行增强或者限制。 静态代理的优点是实现简单,可以在不修改真实对象的情况下对其进行增强或者限制,缺点是需要为每一个真实对象类创建一个代理类,工作量较大。 下面是一个简单的静态代理示例: ```java public interface Subject { void request(); } public class RealSubject implements Subject { @Override public void request() { System.out.println("Real Subject Request"); } } public class ProxySubject implements Subject { private RealSubject realSubject; public ProxySubject(RealSubject realSubject) { this.realSubject = realSubject; } @Override public void request() { System.out.println("Before Real Subject Request"); realSubject.request(); System.out.println("After Real Subject Request"); } } public class Main { public static void main(String[] args) { RealSubject realSubject = new RealSubject(); ProxySubject proxySubject = new ProxySubject(realSubject); proxySubject.request(); } } ``` 在上面的示例,Subject 接口定义了一个 request 方法,RealSubject 类是真实对象类,实现了 Subject 接口的 request 方法,ProxySubject 类是代理类,也实现了 Subject 接口的 request 方法,在其方法调用了 RealSubject 的 request 方法并对其进行了增强。 在 Main 类,我们创建了一个 RealSubject 对象和一个 ProxySubject 对象,通过调用 proxySubject 的 request 方法,实际上是调用了它持有的 realSubject 的 request 方法,并对其进行了增强。 注意,在这个示例,RealSubject 类和 ProxySubject 类都实现了 Subject 接口,这是静态代理的一种常见实现方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值