当前位置: 首页 > news >正文

javaSE接口随笔

接口

1. 如何定义抽象类和抽象方法

访问修饰符 abstract class 类名{访问修饰符 abstract 返回值 方法名(参数列表);
}

抽象类不一定有抽象方法,但是有抽象方法的类一定是抽象类

2. 如何定义接口,接口中能定义哪些方法

访问修饰符 interface 接口名{数据类型 变量名 = 变量的值; //接口中定义的变量都是公开的静态常量返回值类型 方法名(参数列表); //接口中定义的方法都是公开的抽象方法default 返回值类型 方法名(参数列表){// 接口中定义的默认方法都是公开的 => JDK1.8//代码块[return 返回值;]}static 返回值类型 方法名(参数列表){// 接口中定义的静态方法都是公开的 => JDK1.8//代码块[return 返回值;]}private 返回值类型 方法名(参数列表){// 接口中定义的默认方法都是公开的 => JDK1.9//代码块[return 返回值;]}
}

接口没有构造方法

3. 抽象类和接口的区别

a. 抽象类是一个类,所以抽象类只能单继承,而接口可以多继承。一个类在继承抽象类的同时还可以实 现一个或多个接口

b. 抽象类拥有构造方法,而接口没有

c. 抽象类中可以定义成员变量和受保护的、受包保护的成员方法,而接口中定义的变量都是公开的静态 常量,接口中定义的方法都是公开的抽象方法

d. 接口主要用于功能性方面的描述,而抽象类更加注重的是抽象事物的描述。

4.代码复现

package Shape;
/*
几何图形*/
public abstract class Shape {public abstract Number perimeter();public abstract Number area();
}package Shape;public class Rectangle extends Shape{private int width;private int length;public Rectangle(int width, int length) {this.width = width;this.length = length;}public Integer perimeter() {return (width + length) * 2;}public Integer area() {return width * length;}
}package Shape;public class Circle {private int radius;public Circle(int radius) {this.radius = radius;}public Double perimeter() {return 2 * Math.PI * radius;}public Double area() {return Math.PI * radius * radius;}
}package Shape;public class ShapeTest {public static void main(String[] args) {Rectangle r1 = new Rectangle(10,8);System.out.println(r1.perimeter());System.out.println(r1.area());Circle c1 = new Circle(10);System.out.println(c1.perimeter());System.out.println(c1.area());}
}
package Person;public interface Person {String getName();
}package Person;public interface Actor extends Person {void performance();
}package Person;public interface Artist extends Actor , Singer {void endorsement();
}package Person;public interface Singer extends Person {void sing();
}package Person;public class EntertainmentStar implements Artist {private String name;public EntertainmentStar(String name) {this.name = name;}@Overridepublic void endorsement() {System.out.printf("娱乐明星%s代言\n",  getName());
}@Overridepublic void performance() {System.out.printf("娱乐明星%s表演\n", getName());}@Overridepublic void sing() {System.out.printf("娱乐明星%s唱歌\n", getName());
}@Overridepublic String getName() {return name;}
}package Person;public class PersonTest {public static void main(String[] args) {Person p = new EntertainmentStar("刘德华");System.out.println(p.getName());Actor a = new EntertainmentStar("范冰冰");a.performance();Singer s = new EntertainmentStar("张学友");s.sing();Artist artist = new EntertainmentStar("古天乐");artist.endorsement();artist.performance();artist.sing();}
}
package printer;
/*** 打印机对外暴露有墨盒(颜色)和纸张(大小)接口,墨盒生产商按照墨盒接口的约定生产黑白墨盒和* 彩色墨盒,纸张生产商按照纸张接口的约定生产A2纸和A4纸张。*/
public interface Paper {String getSize();//获取纸张大小
}package printer;public class A4Paper implements Paper{public String getSize() {return "A4Paper";}
}package printer;public class A2Paper implements Paper{public String getSize() {return "A2Paper";}
}package printer;/*** 打印机对外暴露有墨盒(颜色)和纸张(大小)接口,墨盒生产商按照墨盒接口的约定生产黑白墨盒和* 彩色墨盒,纸张生产商按照纸张接口的约定生产A2纸和A4纸张。*/
public interface InkBox {String getColor();
}package printer;import javax.swing.*;public class BlackInkBox implements InkBox {public String getColor(){return "black and white";}
}package printer;import java.awt.*;public class ColorInkBox implements InkBox {public String getColor(){return "彩色";}
}package printer;import java.io.PrintStream;
import java.util.Scanner;public class Printer {private InkBox inkBox;private Paper paper;public Printer(InkBox inkBox, Paper paper) {this.inkBox = inkBox;this.paper = paper;}public Printer() {}public void print() {PrintStream printf = System.out.printf("printer use %s InkBox print on %s paper.\n",inkBox.getColor(), paper.getSize());}public InkBox getInkBox() {return inkBox;}public void setInkBox(InkBox inkBox) {this.inkBox = inkBox;}public Paper getPaper() {return paper;}public void setPaper(Paper paper) {this.paper = paper;}
}package printer;public class PrinterTest {public static void main(String[] args) {Printer p1 = new Printer();p1.setPaper(new A4Paper());p1.setInkBox(new ColorInkBox());p1.print();Printer p2 = new Printer(new BlackInkBox(), new A2Paper());p2.print();}
}
http://www.gsyq.cn/news/194943.html

相关文章:

  • YOLOFuse加油站安全监管:烟火风险实时探测
  • UVC驱动开发实战:多摄像头并发处理方案设计
  • [特殊字符]️_开发效率与运行性能的平衡艺术[20260101165644]
  • YOLOFuse远程医疗会诊辅助:患者体征初步判断
  • YOLOFuse边境巡逻应用:非法越境实时警报系统
  • YOLOFuse洪水淹没范围评估:无人机红外航测
  • YOLOFuse牛奶消毒过程监控:包装完整性检验
  • YOLOFuse无人机避障系统:复杂光照条件鲁棒检测
  • YOLOFuse山体滑坡前兆识别:地表移动与热异常
  • USB配置描述符错误排查:完整指南与修复方法
  • YOLOFuse宠物走失识别:小区公共区域搜寻协助
  • YOLOFuse地铁安检违禁品识别:X光+红外辅助判断
  • 解决CNN训练中的TypeError:深入探讨tqdm使用
  • NSE India网站请求超时问题的解决方案
  • Screen to Gif新手教程:零基础快速上手指南
  • 探索数据库设计:确保唯一性映射
  • 别再说“前端很简单”了:有时候,前端比后端更难
  • YOLOFuse农业病虫害监测潜力分析:白天+夜间双模
  • 轻量级应用日志捕获与显示
  • 20260101 之所思 - 人生如梦
  • YOLOFuse适合安防场景吗?夜间红外融合检测实测有效
  • YOLOFuse推理可视化效果展示:exp文件夹图片导出
  • YOLOFuse森林防火预警:远程红外热点持续扫描
  • USB OTG中Host角色切换机制通俗解释
  • 论文期刊写作新纪元:书匠策AI——让学术发表之路如虎添翼
  • OpenPLC基础项目实践:实现简单继电器控制的手把手教程
  • 无需配置CUDA环境!YOLOFuse预装PyTorch一键部署双模态检测
  • 10.c语言指针初阶
  • 论文期刊写作革命:书匠策AI如何以智能之力重塑学术发表范式?
  • YOLOFuse TensorRT加速推理实现路径探索