Java面向对象编程_内部类

总览

在这里插入图片描述

其他文章链接

【 Java编程基础_注解与命名规则&数据类型&运算符&修饰符&流程控制】
【Java面向对象编程_方法&类与对象&数组&String类】
【Java面向对象编程_抽象类&接口&包装类&泛型】
【Java面向对象编程_包&访问控制权限&构造方法私有化&枚举】
【Java面向对象编程_异常的捕获与处理】


本文内容

Java面向对象编程_内部类_第1张图片


1,内部类基础知识

Java面向对象编程_内部类_第2张图片

demo_内部类

class Outer
{
	private String words="外部类私有属性";
	class Inner
	{
		public void say(){
			System.out.println(Outer.this.words);
		}
	}
} 

public class 内部类
{
	public static void main(String agrs[]){
		Outer.Inner in=new Outer().new Inner();
		in.say();
	}
}

2,匿名内部类

Java面向对象编程_内部类_第3张图片

demo_匿名内部类

interface IMessage
{
	public void send(String str);
}

interface IMessageB
{
	public void send(String str);
	public static IMessageB getInstance(){
		return new IMessageB(){
			public void send(String str){
				System.out.println("hello "+str);				
			}
		};
	}
}
public class 匿名内部类
{
	public static void main(String agrs[]){
		IMessage mess=new IMessage(){
			public void send(String str){
				System.out.println("hello "+str);
			}
		};
		mess.send("world");

		IMessageB.getInstance().send("world");
	}
}

3,Lambda表达式

Java面向对象编程_内部类_第4张图片

demo_Lambda表达式

@FunctionalInterface
interface IMath
{
	public abstract int add(int x,int y);
}
@FunctionalInterface
interface IMessage
{
	public abstract void send(String str);
}

public class Lambda表达式
{
	public static void main(String agrs[]){
		IMath math=(a,b)->a+b;
		System.out.println(math.add(10,20));
		IMessage mess=(str)->{
			System.out.println(str);
		};
		mess.send("hello");

	}
}

4,接口方法引用

Java面向对象编程_内部类_第5张图片

demo_方法引用

@FunctionalInterface
interface IFunction<P,R>
{
	public R change(P p);
}

@FunctionalInterface
interface IFunctionB<R>
{
	public R change();
}

@FunctionalInterface
interface IFunctionC<P>
{
	public int change(P p1 ,P p2);
}

class Person
{
	public Person(){
		System.out.println("人");
	}
}
@FunctionalInterface
interface IFunctionD
{
	public void change();
}
public class 方法引用
{
	public static void main(String agrs[]){
		IFunction<Integer,String> fun=String::valueOf;
		System.out.println(fun.change(100).length());

		IFunctionB<String> funB="hello"::toUpperCase;
		System.out.println(funB.change());

		IFunctionC<String> funC=String::compareTo;
		System.out.println(funC.change("hello","Hello"));

		IFunctionD funD=Person::new;
		funD.change();
	}
}

5,内建函数式接口

Java面向对象编程_内部类_第6张图片

demo_内建函数式接口

import java.util.function.*;
public class 内建函数式接口
{
	public static void main(String agrs[]){
		Function<String ,Boolean> funA="**hello"::startsWith;
		System.out.println(funA.apply("**"));

		Consumer<String> funB=System.out::println;
		funB.accept("hello");

		Supplier<String> funC="hello"::toUpperCase;
		System.out.println(funC.get());

		Predicate<String> funD="hello"::equalsIgnoreCase;
		System.out.println(funD.test("hell"));
	}
}

你可能感兴趣的:(Java,SE(持续更新),lambda,java)