面向对象的接口思想与函数式编程

1,接口的基本定义格式:

public interface 接口名称{

//组成部分:可以包含有抽象,静态,默认,私有方法,常量。

}

2.抽象方法

定义:public abstract  返回值 方法名 (参数);直接结束,无大括号

注意:修饰符可以不写,如果写必须是 public abstract 

3,接口实现类;使用定义好

的接口,必须有一个接口的实现类

格式为:public class 实现类名称 implements 接口名称{

//一定要覆盖重写(override)所有的抽象方法==》将接口中的抽象方法抄过来,去掉abstract,加速大括号方法体

}

3,接口与实现类的使用;

创建:接口名称  引用名 =new 实现类名称();

调用:引用名 抽象方法名(参数)

package helloworld;

public interface onlyone {//接口
	public abstract void eat();//抽象方法
	public abstract void sleep();//抽象方法
}
public class hero implements onlyone {//接口實現類
	public  void eat() {
		System.out.println("猫吃鱼");
	}
	public  void sleep() {
		System.out.println("猫睡觉");
}
	public  void doing() {
		System.out.println("猫");
}
	}
public static void main(String[] args) throws IOException {
	onlyone cat=new hero();
	cat.eat();
	cat.sleep();
	//cat.doing();接口實現類里有,但也無法調用,,由接口訣定,這就是接口隔離
	}

使用接口作为参数可传入不同的接口实现类

public static void method(onlyone one) {
	one.eat();
	one.sleep();
}

4.Lambda表达式:本身代表了该怎么做这件事,没有对象的概念在里面(不用在使用接口实现类)

public interface onlyone {//接口
	public abstract int sum(int a,int b);//抽象方法
	//public abstract void sleep();//抽象方法
}
public static void main(String[] args) throws IOException {
	method((a,b)->a+b);
}
public static void method(onlyone one) {
	int result=one.sum(100,200);
	System.out.println(result);
}

表达式为:(a,b)->a+b

method方法需要一个onlyone接口类型的参数

Lambda表达式就是充当了这个参数,->表示一个指向的动作,箭头后面代表了拿到参数后具体做什么事,在调用方法时,参数类型是函数式接口,所以Lambda可以判断出是那个接口

猜你喜欢

转载自blog.csdn.net/printfxgd/article/details/81297130