• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

java多态详解

java 佚名 2年前 (2023-03-11) 91次浏览 已收录 0个评论

标签:run 子类 多态 详解 User Student new java

转自:

http://www.java265.com/JavaCourse/202206/3756.html

java多态详解 下文笔者将详细介绍java多态,如下所示

何为多态呢?

多态指:
   一个同类型的对象,执行同一行为,但是表现出不同的行为内容

多态的常见形式

多态示例:
  父类类型 对象名称 = new 子类构造器;
  接口 对象名称 = new 实现类构造器;

例:

//父类:
public  <a href="https://www.gaodaima.com/tag/class" title="查看更多关于class的文章" target="_blank">class</a> User {
    public String name ="用户";
    void run(){
 
    }
}
//子类1:
public class Student extends User{
    public String name = "学生";
    @Override
    void run() {
        System.out.println("student run!");
    }
}
//子类2:
public class Teacher extends User{
    public String name = "老师";
    @Override
    void run() {
        System.out.println("teacher run");
    }
}

//main方法:
public static void main(String[] args) {
    User a1 = new Student();
    User a2 = new Teacher();
    a1.run();
    a2.run();
    System.out.println(a1.name);
    System.out.println(a2.name);
}

多态中成员访问特点

方法调用
  编译看左
  运行看右

例:

在编译的时候
  先访问"User a1 = new Student();"
  左边“User父类”中的方法
 在运行的时候,会访问右边"Student子类"中的方法 

多态的优点

1. 在多态形式下,右边对象可以解耦合,便于扩展和维护
   User a = new Student();
   User a = new Teacher();
    a.run();//当业务行为随对象而变,只需增加实现类
2.在方法定义时,使用父类作为参数类型,则方法可接收父类的一切子类

多态的缺点

 多态下不能使用子类的独有功能
 只能使用公共的功能

多态情况下,如何使用子类的特有功能呢

实现思路:
    直接为接收到的类型变量,做类型转换为子类,即可使用子类中独有的功能
注意事项:
    当类型转换失败时,会出现ClassCastException异常
	笔者建议,在转换前使用 instanceof进行类型判断

类型转换的方式分享

自动类型转换
User s = new Student();
s.run();
强制类型转换
子类 对象变量 = (子类)父类类型变量
	User s1 = new Student();
	//s1.run();    ×    
	Student s2 = (Student)s1;
	s2.run();//    √ 

标签:run,子类,多态,详解,User,Student,new,java

来源: https://www.cnblogs.com/java265/p/16388917.html


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:java多态详解
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址