网站建设创新点,it运维工资,旌阳移动网站建设,古镇中小企业网站建设目录 一、密封类(Sealed Classes)的概述1.1、概述1.2、特性1.3、注意事项 二、密封类(Sealed Classes)代码示例2.1、密封类(Sealed Classes)代码结构示例2.2、密封类(Sealed Classes)代码示例 三、密封类(Sealed Classes)接口代码示例3.1、密封类(Sealed Classes)接口代码结构示… 目录 一、密封类(Sealed Classes)的概述1.1、概述1.2、特性1.3、注意事项 二、密封类(Sealed Classes)代码示例2.1、密封类(Sealed Classes)代码结构示例2.2、密封类(Sealed Classes)代码示例 三、密封类(Sealed Classes)接口代码示例3.1、密封类(Sealed Classes)接口代码结构示例3.2、密封类(Sealed Classes)接口代码示例 一、密封类(Sealed Classes)的概述
1.1、概述
密封类和接口 限制哪些其他类或接口可以扩展或实现它们。
1.2、特性
JDK15的JEP 360: Sealed Classes (Preview)中作为预览版引入JDK16的JEP 397: Sealed ClassesSecond Preview)中第二轮预览JDK17的JEP 409: Sealed Classes中正式转正。
1.3、注意事项
permits指定的子类必须与父类在同一个显式命名的module下permits指定的子类必须直接继承父类permits指定的子类必须声明自己的密封类型final表示这个子类不能再被继承了;non-sealed表示这个子类没有密封限制随便继承。
二、密封类(Sealed Classes)代码示例
2.1、密封类(Sealed Classes)代码结构示例
密封类(Sealed Classes)代码结构
2.2、密封类(Sealed Classes)代码示例 一个类可以用sealed修饰表示这个类只能由permits指定的子类或接口来继承或实现。 抽象类Animal 由sealed修饰只能由permits指定的子类或接口来继承或实现。 package com.xz.jdk17.day2;
/*** Author: xz* Date: 2024-01-31 19:41* Description: 动物类* 一个类或接口可以用sealed修饰表示这个类或接口只能由permits子句指定的子类或接口来继承或实现。*/
public abstract sealed class Animal permits Dog,Cat,Pig{public abstract String eat();
}抽象类Animal 由sealed修饰说明它的子类会受到限制只能是permits子句中的子类的其中一个。final表示这个子类不能再被继承了。 package com.xz.jdk17.day2;
/*** Author: xz* Date: 2024-01-31 19:47* Description: 抽象类Animal被sealed修饰说明它的子类会受到限制只能是permits子句中生命的子类的其中一个。这些子类如下**/
public final class Cat extends Animal{Overridepublic String eat() {return 鱼;}
}抽象类Animal 由sealed修饰说明它的子类会受到限制只能是permits子句中的子类的其中一个。non-sealed表示这个子类没有密封限制随便继承 package com.xz.jdk17.day2;
/*** Author: xz* Date: 2024-01-31 19:52* Description: 抽象类Animal被sealed修饰说明它的子类会受到限制只能是permits子句中生命的子类的其中一个。这些子类如下*/
public non-sealed class Dog extends Animal{Overridepublic String eat() {return 骨头;}
}类Pig由sealed修饰只能由permits指定的子类或接口来继承或实现。 package com.xz.jdk17.day2;
/*** Author: xz* Date: 2024-01-31 19:59* Description: 抽象类Animal被sealed修饰说明它的子类会受到限制只能是permits子句中生命的子类的其中一个。这些子类如下*/
public sealed class Pig extends Animal permits White,Black{Overridepublic String eat() {return 饲料;}
}类Pig由sealed修饰说明它的子类会受到限制只能是permits子句中的子类的其中一个。non-sealed表示这个子类没有密封限制随便继承 package com.xz.jdk17.day2;
/*** Author: xz* Date: 2024-01-31 20:03* Description:*/
public non-sealed class White extends Pig{
}类Pig 由sealed修饰说明它的子类会受到限制只能是permits子句中的子类的其中一个。final表示这个子类不能再被继承了。 package com.xz.jdk17.day2;
/*** Author: xz* Date: 2024-01-31 20:09* Description:*/
public final class Black extends Pig{}三、密封类(Sealed Classes)接口代码示例
3.1、密封类(Sealed Classes)接口代码结构示例
密封类(Sealed Classes)接口代码结构
3.2、密封类(Sealed Classes)接口代码示例 一个接口可以用sealed修饰表示这个接口只能由permits指定的子类或接口来继承或实现。 接口Animal 由sealed修饰只能由permits指定的子类或接口来继承或实现。 package com.xz.jdk17.day3;/*** Author: xz* Date: 2024-01-31 20:11* Description:*/
public sealed interface Animal permits Cat,Dog,Pig{String eat();
}接口Animal由sealed修饰说明它的子类会受到限制只能是permits子句中的子类的其中一个。final表示这个子类不能再被继承了。 package com.xz.jdk17.day3;
/*** Author: xz* Date: 2024-01-31 20:15* Description:*/
public final class Dog implements Animal{Overridepublic String eat() {return 骨头;}
}接口Animal由sealed修饰说明它的子类会受到限制只能是permits子句中的子类的其中一个。non-sealed表示这个子类没有密封限制随便继承 package com.xz.jdk17.day3;
/*** Author: xz* Date: 2024-01-31 20:18* Description:*/
public non-sealed class Cat implements Animal{Overridepublic String eat() {return 鱼;}
}接口Pig由sealed修饰只能由permits指定的子类或接口来继承或实现。 package com.xz.jdk17.day3;
/*** Author: xz* Date: 2024-01-31 20:21* Description: 注意接口可以被实现也可以被继承。*/
public sealed interface Pig extends Animal permits Black,White {String eat();
}接口Pig由sealed修饰说明它的子类会受到限制只能是permits子句中的子类的其中一个。non-sealed表示这个子类没有密封限制随便继承 package com.xz.jdk17.day3;
/*** Author: xz* Date: 2024-01-31 20:24* Description:*/
public non-sealed class White implements Pig{Overridepublic String eat() {return null;}
}接口Pig 由sealed修饰说明它的子类会受到限制只能是permits子句中的子类的其中一个。final表示这个子类不能再被继承了。 package com.xz.jdk17.day3;
/*** Author: xz* Date: 2024-01-31 20:27* Description:*/
public final class Black implements Pig{Overridepublic String eat() {return null;}
}