java的多态和final关键字

多态:

多态分为对象多态,行为多态

多态的前提:

有继承/实现关系;存在父类引用子类对象;存在方法重写;

注意:多态是对象,行为的多态,java的成员变量不谈多态

这是我写的三个类:

测试:

cpp 复制代码
public class test {
    public static void main(String[] args) {
        //对象多态(编译时看左边,运行时看右边)
        //编译时是people父类的run函数
        people p1=new teacher();
        people p2=new student();
        //行为多态
        p1.run();//teacher run
        p2.run();//student run

        //成员变量没有多态(编译看左边,运行还是看左边)
        System.out.println(p1.name);//父类people
        System.out.println(p2.name);//父类people
    }
}

使用多态的好处:

定义方法时,使用父类类型的形参,可以接收一切子类对象,扩展性更强

在多态形式下,右边的对象是解耦合的(可以随时切换)

缺点:

多态下不能使用子类的独有功能,只能用重写父类方法方法

解决方法:强制类型转换,把父类对象强转成子类对象

子类 对象名=(父类)父类对象

注意:强转前,使用instanceof关键字,判断当前对象的真实类型,再进行强转

java 复制代码
public class test {
    public static void main(String[] args) {
       people p1=new student();
       people p2=new teacher();

       student s1= (student) p1;
       s1.studentrun();

       //student s2= (student) p2;//ClassCastException

        if(p1 instanceof student)//是返回true
        {
            student s3= (student) p1;
            s3.studentrun();
        }
        if(p2 instanceof teacher)
        {
            teacher t1= (teacher) p2;
            t1.teacherrun();
        }


    }
}

final关键字:

修饰类:该类为最终类,不能被继承

修饰方法 :该方法为最终方法,不能被重写

修饰变量:该变量只能被赋值一次

变量:

1局部变量

2成员变量:

1静态成员变量

2实例成员变量

常量:

使用static final 修饰的成员变量就被称为常量

java 复制代码
public class test1 {
    public static final String NAME="hhh";

    public static void main(String[] args) {
        System.out.println(NAME);//hhh
    }
}
相关推荐
sali-tec2 分钟前
C# 基于halcon的视觉工作流-章68 深度学习-对象检测
开发语言·算法·计算机视觉·重构·c#
Spring AI学习24 分钟前
Spring AI深度解析(9/50):可观测性与监控体系实战
java·人工智能·spring
java1234_小锋1 小时前
Spring IoC的实现机制是什么?
java·后端·spring
生骨大头菜2 小时前
使用python实现相似图片搜索功能,并接入springcloud
开发语言·python·spring cloud·微服务
绝不收费—免费看不了了联系我2 小时前
Fastapi的单进程响应问题 和 解决方法
开发语言·后端·python·fastapi
xqqxqxxq2 小时前
背单词软件技术笔记(V2.0扩展版)
java·笔记·python
消失的旧时光-19432 小时前
深入理解 Java 线程池(二):ThreadPoolExecutor 执行流程 + 运行状态 + ctl 原理全解析
java·开发语言
咖啡续命又一天2 小时前
Trae CN IDE 中 Python 开发的具体流程和配置总结
开发语言·ide·python·ai编程
哈哈老师啊2 小时前
Springboot学生综合测评系统hxtne(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·spring boot
4311媒体网2 小时前
帝国cms调用文章内容 二开基本操作
java·开发语言·php