抽象类和接口的应用
来源:互联网 发布:爱知学院大学 编辑:程序博客网 时间:2024/06/15 01:30
1.1 为抽象类和接口实例化
在Java中可以使用对象多态性,为抽象类和接口实例化,这样在使用抽象类和接口的时候,就可以调用本子类中覆写过的方法了。
之所以抽象类和接口不能直接实例化,是因为其内部包含了各个抽象方法,抽象方法本事是没有实现的方法,所以无法调用,
通过对象多态性发现,子类发生了向上转型之后,所调用的方法都是被覆写过的方法。
为抽象类实例化
abstract class A //定义抽象类{ public abstract void print() ; //定义抽象方法 在抽象类中abstract不能省略 //在接口中可以abstract省略}class B extends A //定义子类继承抽象类{ public void print() //覆写父类中抽象方法 { System.out.println("Hello World") ; }}public class AbstractCaseDemo01{ public static void main(String[] args) { A a = new B() ; //通过子类 为 抽象类实例化//向上转型 a.print() ; }}
为接口实例化
interface A //定义抽象类{ public abstract void print() ; //定义抽象方法 在抽象类中abstract不能省略 //在接口中可以abstract省略}class B implements A //定义子类继承抽象类{ public void print() //覆写父类中抽象方法 { System.out.println("Hello World") ; }}public class InterfaceCaseDemo01{ public static void main(String[] args) { A a = new B() ; //通过子类 为 抽象类实例化//向上转型 a.print() ; }}
1.2 抽象类的应用—定义模板
abstract class Person //定义抽象类{ private String name ; //声明String属性 private int age ; //声明int属性 public Person(String name ,int age) //构造方法 { this.name = name ; this.age = age ; } public String getName() { return this.name ; } public int getAge() { return this.age ; } public void say() //定义一个方法 { System.out.println(this.getCount()) ; } public abstract String getCount() ; //定义抽象方法 不用返回值}class Student extends Person //定义子类继承抽象类{ private float score ; //声明float属性表示 成绩 public Student(String name,int age,float score) { super(name,age) ; this.score = score ; } public float getScore() { return this.score ; } public String getCount() //覆写抽象类中抽象方法 { return "姓名:"+this.getName() +"年龄:"+this.getAge() +"成绩:"+this.getScore() ; }}class Worker extends Person //定义子类继承抽象类{ private float salary ; //声明float属性表示 成绩 public Worker(String name,int age,float salary) { super(name,age) ; this.salary = salary ; } public float getSalary() { return this.salary ; } public String getCount() //覆写抽象类中抽象方法 { return ("姓名:"+this.getName() +"年龄:"+this.getAge() +"工资:"+this.getSalary()) ; }}public class AbstractDemo04{ public static void main(String[] args) { Person per1 = null ; //声明抽象类对象 Person per2 = null ; //声明抽象类对象 per1 = new Student("IronMan",20,29.1f) ; //学生是一个人 per2 = new Worker("SpiderMan",30,3000.0f) ; //工人是一个人 per1.say() ; //学生说学生的 per2.say(); //工人说工人的 }}
1.3 接口的应用 —制定标准
interface USB //定义USB接口{ public void start() ; //定义抽象方法 USB开始工作 public void stop() ; //定义抽象方法 USB停止工作}class Computer //定义类{ public static void plugin(USB usb) //USB接口作为参数传入到plugin方法中 { usb.start() ; System.out.println("----USB Start----") ; usb.stop() ; }}class Flash implements USB //定义类实现USB接口{ public void start() //覆写接口中方法 { System.out.println("U盘开始工作") ; } public void stop() //覆写接口中抽象方法 { System.out.println("U盘停止工作") ; }}public class InterfaceDemo05{ public static void main(String[] args) { Computer com = null ; //声明Computer对象 com.plugin(new Flash()) ;//对象.方法(子类实例) }}
1.4 工厂设计模式
interface USB //定义USB接口{ public void start() ; //定义抽象方法 USB开始工作 public void stop() ; //定义抽象方法 USB停止工作}class Computer //定义类{ public static void plugin(USB usb) //USB接口作为参数传入到plugin方法中 { usb.start() ; System.out.println("----USB Start----") ; usb.stop() ; }}class Flash implements USB //定义类实现USB接口{ public void start() //覆写接口中方法 { System.out.println("U盘开始工作") ; } public void stop() //覆写接口中抽象方法 { System.out.println("U盘停止工作") ; }}public class InterfaceDemo05{ public static void main(String[] args) { Computer com = null ; //声明Computer对象 com.plugin(new Flash()) ;//对象.方法(子类实例) }}
1.5 代理设计模式
interface Network //定义接口{ public void browse() ; //定义抽象方法 浏览}class Real implements Network //定义类实现接口{ public void browse() //覆写抽象方法 { System.out.println("上网浏览信息") ; }}class Proxy implements Network //定义代理方法类{ private Network network ; //声明代理对象 public Proxy(Network network)//接口作为参数传入代理方法中 { this.network = network ; } public void check() //定义方法 用于检查 { System.out.println("检查用户") ; } public void browse() { this.check() ; //调用检查方法 this.network.browse() ; //调用Real中上网操作 }}public class ProxyDemo01{ public static void main(String[] args) { Network net = null ; //声明接口 net = new Proxy(new Real()) ; //指定代理 net.browse() ; }}
0 0
- 抽象类和接口的实际应用
- 抽象类和接口的应用
- 抽象类和接口的应用
- 抽象类和接口的应用
- 抽象类和接口的应用场景
- 抽象类和接口的区别 以及选择抽象类和接口的应用场景
- (42)抽象类和抽象方法的应用(43)接口与面向对象中多态的应用
- 今天讲了接口的应用和抽象类
- 【资料】接口和抽象类的区别与应用
- java自学 抽象类和接口的应用
- 抽象类和接口的区别与应用
- 建议102:区分接口和抽象类的应用场合
- 抽象类和接口的应用----常用设计模式总结
- 抽象类和接口的区别与应用场景
- 抽象类和接口 应用场景
- 接口的行为抽象和抽象类的行为抽象
- 抽象类与接口的应用
- 抽象类与接口的应用区别
- Response.Flush和Response.BufferOutput
- LeetCode题解——Evaluate Reverse Polish Notation
- 安卓中轻量级数据库SQLite的使用
- js获取子元素
- Linux下iptables 禁止端口和开放端口(仅供参考,里面含有iptables如何指定允许外网访问的端口号范围,以及对局域网的ip全部开放端口)
- 抽象类和接口的应用
- 自定义UIbutton的样式
- 第一篇博客
- 报表设计中参数、脚本的使用以及生成系统时间
- eclipse导入工程失败解决方法
- 机器学习实战k-近邻算法(kNN)应用之改进婚恋网站配对效果代码解
- 为什么Lisp语言如此先进?
- SmartConfig 技术原理
- Android 自定义水波,touch和move状态下触发 (玩具)