当前位置: 首页 > 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.jsqmd.com/news/178684/

相关文章:

  • UVC驱动开发实战:多摄像头并发处理方案设计
  • YOLOFuse野生动物保护区反盗猎系统:隐蔽式布控
  • 手把手教你完成LED显示屏同步模式设置
  • YOLOFuse养老院跌倒检测方案:隐私保护型红外识别
  • YOLOFuse小区垃圾分类督导:错误投放行为抓拍
  • [特殊字符]_可扩展性架构设计:从单体到微服务的性能演进[20260101170150]
  • haxm is not installed?超详细版解决方案步骤说明
  • YOLOFuse远程医疗会诊辅助:患者体征初步判断
  • [特殊字符]_内存管理深度解析:如何避免GC导致的性能陷阱[20260101170655]
  • 数据分类与汇总:使用Pandas分析图像像素值
  • YOLOFuse实验室安全管理:危险操作自动截停
  • Multisim仿真电路图实例对SR锁存器工作原理的图解说明
  • YOLOFuse边境巡逻应用:非法越境实时警报系统
  • YOLOFuse茶叶加工厂卫生检查:异物混入实时拦截
  • YOLOFuse洪水淹没范围评估:无人机红外航测
  • YOLOFuse港口夜间作业监控解决方案
  • YOLOFuse牛奶消毒过程监控:包装完整性检验
  • 核心要点:选择整流二极管时的关键参数分析
  • YOLOFuse无人机避障系统:复杂光照条件鲁棒检测
  • YOLOFuse验证集评估频率修改方法:每轮次或间隔
  • YOLOFuse零售门店客流统计:全天候计数精准稳定
  • 使用Jackson过滤Map中的键
  • Babel + Webpack构建中函数扩展的使用技巧
  • YOLOFuse山体滑坡前兆识别:地表移动与热异常
  • USB配置描述符错误排查:完整指南与修复方法
  • YOLOFuse工厂流水线异物混入检测:品质保障新手段
  • YOLOFuse宠物走失识别:小区公共区域搜寻协助
  • YOLOFuse与百度AI平台对接可行性研究
  • YOLOFuse太空舱内部监控:宇航员健康状态辅助评估
  • 【大学院-筆記試験練習:数据库(データベース問題訓練) と 软件工程(ソフトウェア)(5)】