/*
多态介绍和总结,主板示例,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 Hibernate
2.操作数据库。
c create r read u update d delete
3.关闭数据库连接。
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;
}
day08多态介绍和总结,主板示例,Object 类
最新推荐文章于 2023-07-24 10:51:43 发布