day08多态介绍和总结,主板示例,Object 类

来源:互联网 发布:村招募淘宝报名入口 编辑:程序博客网 时间:2024/06/01 08:20
/*多态介绍和总结,主板示例,Object 类*/4.9 多态可以理解为事物存在的多种体现形态。1.多态的体现:父类引用指向了自己的子类对象。父类的引用可以接收自己的本类对象。2.多态的前提:1.必须是类与类之间有关系,要么继承,要么实现。2.通常还有一个前提:存在覆盖。3.多态的好处多态的出现大大的提高了程序的扩展性。多态的bei端:提高了扩展性,但是只能使用父类的引用访问父类中的成员。强制将父类的引用。转成子类类型。向下转型。Cat c = (Cat)a;不可以将父类的对象转成子类类型。多态自始至终都是子类对象在做着变化。转换前先 a instanceof Cat 判断一下。a instanceof Cat :此处a 的实例是Cat吗?4.多态的应用5.多态使用的注意事项(特点)1.在多态中成员函数的特点:在编译时期,参与引用型变量所属的类中是否有调用方法,有就通过,没有就编译失败。在运行时期,参阅对象所属的类中是否有调用的方法。简单总结:成员函数在多态调用时,。。。编译看左边,运行看右边。静态函数时,编译运行都看左边。在多态中成员变量无论编译和运行,都参阅左边。//主板示例interface PCI{void close();void open();}class MainBoard{public void run(){System.out.println("mainboard run");} public void usePCI(PCI p){if (p!=null){p.open();p.close();}}}class NetCard implements PCI{public void open(){System.out.println("netcard run");}public void close(){System.out.println("netcard close");}}class SoundCard implements PCI{public void open(){System.out.println("soundcard run");}public void close(){System.out.println("soundcard close");}}class DuoTaiDemo5{public static void main(String[] args){MainBoard mb = new MainBoard();mb.run();mb.usePCI(null);mb.usePCI(new NetCard());mb.usePCI(new SoundCard());}}需求:数据库的操作1.连接数据库。JDBC Hibernate2.操作数据库。c create r read u update d delete3.关闭数据库连接。interface UserInfoDao{public void add(User user);public void delete(User user);}class UseInfoByJDBC implements UserInfoDao{public void add(User user){1.JDBC连接数据库2.使用SQL添加语句添加数据3.关闭连接。}public void delete(User user){1.JDBC连接数据库2.使用SQL删除语句删除数据3.关闭连接。}}class UserInfoHibernate implements UserInfoDao{public void add(User user){1.Hibernate连接数据库2.使用SQL添加语句添加数据3.关闭连接。}public void delete(User user){1.Hibernate连接数据库2.使用SQL删除语句删除数据3.关闭连接。}}class DBOperate{public static void main(String[] args){//UserInfoByJDBC ui = new UserInfoByJDBC();//ui.add(user);//ui.delete(user);UserInfoDao ui = ;ui.add(user);ui.delete(user);}}Object 类 是java所有对象的上帝。每个类都使用object作为超类。该类中定义的是所有对象都具备的功能。equals比较的是地址。重写 object的equqls,要注意判断和转换动作`public boolean equals(Object obj){if (!(obj instanceof Demo)){return false;}Demo d = (Demo)obj;return this.num == d.num;}object 类的 toString()方法。默认显示 类名和哈希值。一般要覆盖toString()方法。显示自己的内容public String toString(){return "demo:"+num;}