java中的bo怎么理解?怎么运用 admin 2023-11-20 10:48:02 篇首语:本文由小编为大家整理,主要介绍了java中的bo怎么理解?怎么运用相关的知识,希望对你有一定的参考价值。 参考技术A BO:全称是business object:业务对象主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。比如一个简历,有教育经历、工作经历、社会关系等等。我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。建立一个对应简历的BO对象处理简历,每个BO包含这些PO。这样处理业务逻辑时,我们就可以针对BO去处理。简单点说,bo就是实现类方法。现在都是接口编程,接口里只是定义方法名,在bo实现类中,完成方法的详细操作。也就是说,bo里会有数据库对象或者数据库模板对象,可以直接对数据库进行增删改查操作,并返回操作结果。这个过程可以理解成(以ajax为例),前台传数据,通过ajax交互到后台,交与action处理,action里调用bo方法进行数据库实际操作,把结果再返还给action,action再把结果返回给前台。本回答被提问者采纳 java中的多态 到底怎么使用Java中的多态允许父类指针指向子类实例。如:Father obj=new Child();(其中Child是Father的子类)。这样就产生了一个问题—— 使用这个父类型的指针访问类的属性或方法时,如果父类和子类都有这个名称的属性或方法,哪一个属性或方法会被调用呢? 最好的办法是实验: class Father int r; Father() r=4; void printname() System.out.println("I’m father"); class Child extends Father int r; Child() r=5; void printname() System.out.println("I’m Child"); public class Test public static void main(String[] args) Father obj=new Child(); System.out.println(obj.r); obj.printname(); 结果输出: 4 I’m Child 实验证明。属性会访问父类的。方法分访问子类的。 这就是多态了。 不要以为Father obj=new Child();这条语句一定会让obj.printname()指向Chlid定义的printname()。实际上,如果你把Father类中的printname()方法删除,这个程序将编译失败。因为Father中的并没有定义printname()这个函数。多态是晚绑定*(见本文最后的资料)的,在Father obj=new Child();这个语句中,如果Father中没有printname()这个函数,就不会为obj建立一个用于调用printname()函数的指针。所以调用obj.printname()会出错。如果Father中有这个函数。指向printname()函数的指针会被创建。在调用obj.printname()时,不会出错,而且,因为obj指向的是new Child(),是个Chld类的实例。所以调用obj.printname()时调用了Child类中定义的printname()。这就是方法的动态绑定。 那么,刚才说到把Father类中的printname()方法删掉后,obj将无法调用Child类中的printname(),因为obj.printname()会编译失败。那么如果我就是需要调用要怎么办呢?其实虽然obj是Father类型的,但是它指向的是一个Child类的实例。那么可以将obj强制类型转换为Child。再调用printname()方法就可以了。 在上面程序中,把Father类中的printname()方法整个删掉,再将obj.printname() 改成 ((Child)obj).printname()后,编译成功,结果输出: 4 I’m Child 两次输出的结果都是I’m Child。 那么如何可以运行Child类中的printname()来输出“I’m Father”呢? 其实只需要将Father obj=new Child();改成Father obj=new Father();就可以了,呵呵。另一个办法就是将Child类中定义的printname()整个删掉。为什么这样可以成功呢?自己想想,嘿嘿。最后会有个这样的思考题。 看到这儿你可能早就想问了: 为什么obj.r是4?为什么不是5? 呵呵。其实很简单。Java中的多态仅为方法而言,成员变量还是使用的父类的成员变量。也就是说,因为“Father obj =……”,所以obj是Father类型的,所以obj里面的r是Father里面的r,所以输出obj.r就是4了。 你又想问: 那么5去哪了?new Child()的时候,不是会把5放到Child的r中吗? 实际上5还是有的。只是obj.r是4而已。想访问Child中的r,把5读出来,可以这样写: ((Child)obj).r 就是把obj由Father型强制转换成了Child型。 OK,方法和属性在多态中是什么样的你都清楚了。现在做个题测试一下吧: 这是J@Whiz1.4的一道题: class Base int i = 99; public void amethod() System.out.println("Base.amethod()"); Base() amethod(); public class Derived extends Base int i = -1; public static void main(String argv[]) Base b = new Derived(); System.out.println(b.i); b.amethod(); public void amethod() System.out.println("Derived.amethod()"); 会输出什么? 先想想,再看答案: 答案: ======================== Derived.amethod() 99 Derived.amethod() ======================== 讲解: 这个程序的执行过程是这样的: 第一行:Base b=new Derived(); 执行这一行语句的过程中,要构造Derived这个类,而它有父类Base,所以先构造Base类。构造Base类的默认构造函数有定义。内容是执行amethod()方法。 实际上,Base类构造方法中的执行amethod(),相当于执行this.amethod(),在这个程序中,就相当于执行b.amethod()。而b是Base类型的,指向了Derived类的实例的指针。所以跟据上面我们的总结,实际上执行的是Derived类的amethod()函数。所以,第一行“Base b=new Derived();”执行完,输出"Derived.amethod()"。 第二行:System.out.println(b.i); 这个很简单,成员变量,不考虑多不多态,只看它定义时前面的类型。这个程序中是Base b,所以b.i就是Base类中的i。输出99 第三行:b.amethod(); 调用Derived类中的amethod()方法。 其实这行就是迷惑你的,如果没有这一行。你可能会警觉起来——咦?为什么这儿定义一个amethod()呢?没有地方调用它啊? 有了这行代码,就会使你放松警惕。觉得,啊。定义了这个是用来让b.amethod();调用的。 参考技术A 继承与多态(二)-国信蓝点JAVA视频教程v.ku6.com/show/1KkeeNf5lbRHIBvI.html 多态(三)—国信蓝点JAVA视频教程v.ku6.com/show/Rpcthe7ZkqC_axe8.html 以上是关于java中的bo怎么理解?怎么运用的主要内容,如果未能解决你的问题,请参考以下文章 admin的默认密码是多少 Tampermonkey Beta与ampermonkey Stable有啥不同 您可能还会对下面的文章感兴趣: 相关文章 浏览器打不开网址提示“ERR_CONNECTION_TIMED_OUT”错误代码的解决方法 如何安装ocx控件 VMware的虚拟机为啥ip地址老是自动变化 vbyone和EDP区别 linux/debian到底怎么重启和关机 苹果平板键盘被弄到上方去了,如何调回正常? 机器学习常用距离度量 如何查看kindle型号