首页 > 编程语言 >java基础-面向对象-多态(四)

java基础-面向对象-多态(四)

时间:2023-04-23 13:34:35浏览次数:31  
标签:java void 多态 面向对象 ui user new public


某一个事务不同的体现形态

例如:

人:男人、女人

动物:猫、狗

猫 x = new 猫();

动物 x = new 猫();

1、多态的体现

父类的引用指向了自己的子类对象

父类的引用也可以接受自己的子类对象

2、多态的前提

必须是类与类之间有关系,要么继承、要么实现,通常还有一个前提,存在覆盖

3、多态的好处

多态的出现大大的提高了程序的扩展性

4、多态的弊端

提高的扩展性,但是只能使用父类的引用访问父类中的成员

多态的转型

5、在多态中成员的特点

在多态中成员函数的特点

在编译中,参阅引用类型变量所属的类(父类)中是否有调用的方法,如果有,编译通过,如果没有,编译失败

在运行中,参阅对象所属的类中是否有调用的方法

在多态中成员变量的特点

无论编译和运行,都参考左边(引用型变量所属的类 (父类))

在多态中,静态成员函数的特点

无论编译和运行,都参考左边

Fu  z = new zi();

z.method1();

z.method2();

z.method3();

class 毕姥爷{
	void 讲课(){
		System.out.println("企业管理");
	}
	void 钓鱼(){
		System.out.println("钓鱼");
	}
}
class 毕老师 extends 毕姥爷{
	void 讲课(){
		System.out.println("JAVA");
	}
	void 看电影(){
		System.out.println("看电影");
	}
}
class {
	public static void main(String[] args) {
		毕姥爷 x = new 毕老师(); //毕老师对象被提升为了毕姥爷类型。 向上转型
//		x.讲课();
//		x.看电影();  //错误.
		毕老师 y = (毕老师)x; //将毕姥爷类型强制转换成毕老师类型。 向下转型
		y.看电影();//在多态中,自始自终都是子类对象在做着类型的变化。
	}
}

 

6、多态的应用

java基础-面向对象-多态(四)_多态

interface UserInfoDao
{
    public void add(User user);
    
    public void delete(User user);
    
}

class UserInfoByJdbc implements UserInfoDao
{
     public void add(User user)
    {
        使用jdbc 建立连接
        新增用户
        使用jdbc 断开连接
    }    
      public void delete(User user)
        {
           使用jdbc 建立连接
            删除用户
           使用jdbc 断开连接
        }
}

class UserInfoByHibernate implements UserInfoDao
{
        public void add(User user)
        {
            使用Hibernate 建立连接
            新增用户
            使用Hibernate 断开连接
        }    
        public void delete(User uer)
        {
            使用Hibernate 建立连接
            删除用户
            使用Hibernate 断开连接
        }
}

public static void main(String[] args)
{
     UserInfoDao ui = new UserInfoByJdbc();
       ui.add(user);
        ui.delete(user);   

    //如果后期想换连接方式 ,右侧直接改动就可以,降低耦合性,便于扩展
    UserInfoDao ui = new UserInfoByHibernate();
    ui.add(user);
    ui.delete(user);
}

 

标签:java,void,多态,面向对象,ui,user,new,public
From: https://blog.51cto.com/u_16084838/6217461

相关文章

  • java基础-面向对象-继承(三)
    This  Super  继承的时候出现的两个关键字,final(不让复写方法)  abstract (必须复写方法)interface(修饰类)  implement继承好处:提高代码的复用性, 让类与类之间产生了关系,提供了另一个特征多态的前提父类的由来,其实是由多个类不断向上抽取共性内容而来的java来说,继承是单......
  • java基础-异常处理(六)
    异常处理,出现的问题有很多种,比如角标越界,空指针等都是。就对这些问题进行分类。而且这些问题都有共性内容比如:每一个问题都有名称,同时还有问题描述的信息,问题出现的位置,所以可以不断的向上抽取。形成了异常体系。--------java.lang.Throwable:Throwable:可抛出的。   |--Error:错......
  • Java SpringBoot 7z 压缩、解压
    JavaSpringBoot7z压缩、解压JavaSpringBoot7z压缩、解压cmd7z文件压缩7z压缩测试添加依赖<dependency><groupId>org.apache.commons</groupId><artifactId>commons-compress</artifactId><version>1.12</versi......
  • jackson将java对象转换为json字符串
    1.1. 下载jacksonJackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。而且Jackson社区相对比较活跃,更新速度也比较快。下载地址:http://jackson.codehaus.org/1......
  • 力扣844(Java)-比较含退格的字符串(简单)
    题目:给定s和t两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回true。#代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。 示例1:输入:s="ab#c",t="ad#c"输出:true解释:s和t都会变成"ac"。示例2:输入:s="ab##",t="c#d#"输出:true......
  • java:文件写入BufferedOutputStream写入字节和PrintWriter写入字符
    BufferedOutputStream和FileOutputStream写入二进制字节方法定义publicBufferedOutputStream(OutputStreamout){示例BufferedOutputStreamwriter=newBufferedOutputStream(newFileOutputStream("demo.txt"));writer.write("helloworld".getBytes());w......
  • java使用数组实现队列
    1.1. 队列的数据结构队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。1.2. Java实现QueueTestpackagech04;publicclassQ......
  • java用数组实现栈
    1.1. 栈的数据结构栈是一种先进后出的数据结果,只能在一端(称为栈顶(top))对数据项进行插入和删除。1.2. Java实现StackTestpackagech04;publicclassStackTest{publicstaticvoidmain(String[]args){ArrayStackstack=newArrayStack(10);......
  • Json字符串转换为java对象
    1.  Json字符串转换为java对象1.1. Json字符串转换为javabeanJson2Bean.javapackagejackson;importjava.io.IOException;importorg.codehaus.jackson.map.ObjectMapper;publicclassJson2Bean{publicstaticvoidmain(String[]args)throwsIOExcepti......
  • java利用json-lib操作json
    1.1. 下载json-lib.jarhttp://sourceforge.net/projects/json-lib/files/json-lib/1.2. Java对象转换为json1.2.1.  Map对象转换为jsonMap2Json.javapackagejson;importjava.util.HashMap;importjava.util.Map;importnet.sf.json.JSONArray;publicclassMap2......