java的多态和final关键字

多态:

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

多态的前提:

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

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

这是我写的三个类:

测试:

public class test {public static void main(String[] args) {//对象多态(编译时看左边,运行时看右边)//编译时是people父类的run函数people p1=new teacher();people p2=new student();//行为多态p1.run();//teacher runp2.run();//student run//成员变量没有多态(编译看左边,运行还是看左边)System.out.println(p1.name);//父类peopleSystem.out.println(p2.name);//父类people}
}

 使用多态的好处:

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

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

缺点:

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

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

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

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

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;//ClassCastExceptionif(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 修饰的成员变量就被称为常量

public class test1 {public static final String NAME="hhh";public static void main(String[] args) {System.out.println(NAME);//hhh}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/578369.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql5.7 源码分析--初始化

集中在sql\mysqld.cc文件的mysqld_main函数中(): 主程序入口 在sql\main.cc文件中: int main(int argc, char **argv) {return mysqld_main(arg, argv); } 一、mysql为了跨平台,对win32系统做了单独的初始化&#x…

【Docker】搭建强大易用的个人博客 - Halo

【Docker】搭建强大易用的个人博客 - Halo 前言 本教程基于绿联的NAS设备DX4600 Pro的docker功能进行搭建,采用Halo MySQL实例作为演示。 简介 Halo [ˈheɪloʊ] 是一个简洁,现代,快速且非常灵活的建站工具,它是由一位中国开…

统信 UOS V20 一键安装 Oracle 11GR2(231017)单机版

Oracle 一键安装脚本,演示 统信 UOS V20 一键安装 Oracle 11GR2(231017)单机版过程(全程无需人工干预):(脚本包括 ORALCE PSU/OJVM 等补丁自动安装) ⭐️ 脚本下载地址:…

机器人码垛机:智能仓储系统的重要组成部分

随着科技的飞速进步,机器人技术已经渗透到了许多行业领域,其中,仓储业尤为显著。机器人码垛机作为智能仓储系统的重要组成部分,不仅提高了码垛效率,还降低了人工成本和安全风险。然而,在其广泛应用的同时&a…

Linux中安装JDK17.X

1、总体概述? 该操作方式适合centos或red hat环境 2.1、在线下载JDK安装包? 通过wget命令下载JDK17.X包 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 如果提示:没有wget命令就安装wget yum install w…

windows@浏览器主页被篡改劫持@360篡改主页@广告和弹窗设置@极速版

文章目录 360篡改浏览器主页方法1锁定浏览器主页 方法2注册表修改 360广告和弹窗360极速版 小结 360篡改浏览器主页 如果您使用360,且不想卸载它,那么当你启动360后,它可能会篡改你的浏览器(比如edge)的主页start page为360早期可能是通过修改快捷方式的target等属性,但是现在…

WebGIS开发

1.准备工作 高德开发API注册账号&#xff0c;创建项目拿到key和密钥 高德key 2.通过JS API引入高德API <html><head><meta charset"utf-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><metaname&quo…

m脚本分析can记录文件

协助同事分析CAN日志文件&#xff0c;写了一个m脚本文件&#xff0c;帮助定位丢帧问题的发生。 log文件格式 分析代码 close all;clear;clc;%load data from a file [FileName,PathName,~] uigetfile(*.trc,Sample Dialog Box);fileID fopen([PathName FileName]); disp(Fi…

ATTCK学习笔记

ATT&CK 前言知识 威胁情报&#xff1a;一般为网络流量中或者操作系统上观察到的能高度表明计算机被入侵的痕迹&#xff0c;例如某病毒的Hash值、服务器的IP地址等等。简单来说&#xff0c;威胁情报就像是当计算机被入侵时所表现出来的某种特征&#xff0c;我们将这些威胁…

基于单片机bootloader的随笔

基于单片机bootloader的随笔 一、前言 一直觉得做产品开发需要得考虑一些安全策略&#xff0c;一般的设计固件时会进行bootloader设计&#xff0c;而设计一个高效且安全的定制Bootloader需要考虑以下几个关键因素&#xff1a; 1. 安全性 首先确保Bootloader自身的安全性&am…

Webpack生成企业站静态页面 - ajax请求

一些项目因需求不同&#xff0c;如需SEO或小项目&#xff0c;使用angular、react或vue就大材小用了。可以通过webpack、gulp这些构建工具&#xff0c;也能快速完成html页面开发&#xff0c;并且也能使用less/sass/styus等样式预编译功能&#xff0c;以及将js、html分模块、分组…

FreeRtos作业1

1.总结keil5下载代码和编译代码需要注意的事项 代码写完之后的操作流程 2.总结STM32Cubemx的使用方法和需要注意的事项 选择芯片型号 生成代码 3.总结STM32Cubemx配置GPIO的方法 4、使用定时器2让黄灯闪烁 /* USER CODE END Header */ /* Includes --------------------------…