Java--instanceof关键字、笔记本接口项目、final关键字、四种权限修饰符

uniapp微信小程序 - 解决输入框input软键盘弹起时页面整体上移问题,页面上推导致顶部出现元素遮挡问题,uniapp软键盘导致页面上移头部内容被错位遮住错乱,让页面头固定在顶部不动不会受影响! 解决uni-app微信小程序底部input输入框,键盘弹起时页面整体上移问题,当键盘弹起时,会导致页面整体上移,页面头固定在顶部不动,微信小程序键盘弹起时,底部输入框抬起至键盘上方,顶部导航栏固定不动,uni-app输入框,输入框在底部;当弹出键盘时,页面整体上移,页面头信息会消失不见,小程序底部input输入框,input组件弹起系统键盘时,键盘会顶住页面导致页面会上移,当键盘弹起时整个页面被挤压,导致元素上移或被覆盖,输入框能自动抬起至键盘上方,顶部导航栏保持固定,不被顶上去,如何解决这个问题,动态高度 阅读详情

1.instanceof关键字进行类型判断

如何才能知道一个父类引用的对象,本来是什么子类。

格式:
对象 instanceof 类名称

这将得到一个Boolean值结果,也就是判断前面的对象能不能当做后面类型的实例。

//动物类父类
public abstract class Animal {

    public abstract void eat();
}
//猫类子类
public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }

    //子类特有方法
    public void catchMouse(){
        System.out.println("猫捉老鼠");
    }
}
//狗类子类
public class Dog extends Animal {
    @Override
    public void eat() {
        System.out.println("狗吃狗粮");
    }

    public void watchHouse(){
        System.out.println("狗看家");
    }
}
public class Demo02Instanceof {

    public static void main(String[] args) {
        Animal animal = new Cat();//本来是一只猫
        animal.eat();//猫吃鱼

        //如果希望调用子类特有方法,需要向下转型
        //判断一下父类引用animal本来是不是Dog
        if(animal instanceof Dog){
            Dog dog = (Dog) animal;
            dog.watchHouse();
        }
        // 判断一下父类引用animal是不是Cat
        if (animal instanceof Cat){
            Cat cat = (Cat) animal;
            cat.catchMouse();
        }

        giveMeApet(new Dog());
    }
    public static void giveMeApet(Animal animal){
        if(animal instanceof Dog){
            Dog dog = (Dog) animal;
            dog.watchHouse();
        }

        if (animal instanceof Cat){
            Cat cat = (Cat) animal;
            cat.catchMouse();
        }
    }
}

输出结果:

 2.笔记本接口项目

//定义USB接口
public interface USB {

    public abstract void open();// 打开设备
    public abstract void close();// 关闭设备
}
//定义键盘
// 键盘就是一种USB设备
public class Keyboard implements USB {
    @Override
    public void open() {
        System.out.println("打开键盘");
    }

    @Override
    public void close() {
        System.out.println("关闭键盘");
    }

    public void type(){
        System.out.println("键盘输入");
    }
}
//定义鼠标
// 鼠标就是一种USB设备
public class Mouse implements USB {
    @Override
    public void open() {
        System.out.println("打开鼠标");
    }

    @Override
    public void close() {
        System.out.println("关闭鼠标");
    }

    public void click(){
        System.out.println("鼠标点击");
    }
}
//定义计算机类
public class Computer {

    public void powerOn(){
        System.out.println("笔记本电脑开机");
    }

    public void powerOff(){
        System.out.println("笔记本电脑关机");
    }

    //使用USB设备的方法,使用接口作为方法的参数
    public void useDevice(USB usb){

        usb.open();// 打开设备

        if(usb instanceof Mouse){
            Mouse mouse = (Mouse) usb;//向下转型
            mouse.click();

        }else if(usb instanceof Keyboard){
            Keyboard keyboard = (Keyboard) usb;//向下转型
            keyboard.type();
        }

        usb.close();//关闭设备
    }
}
//主程序

public class DemoMain {

    public static void main(String[] args) {
        //首先创建一个笔记本电脑
        Computer computer = new Computer();
        computer.powerOn();

        //准备一个鼠标,供电脑使用
        Mouse mouse = new Mouse();
        //首先进行向上转型,传递进去的就是USB鼠标
        USB usb = mouse;//多态写法
        computer.useDevice(usb);//参数是USB类型。

        //创建USB键盘
        Keyboard keyboard = new Keyboard(); // 没有使用多态写法
        // 方法参数是USB类型,传递进去的是实现类
        computer.useDevice(keyboard);//正确写法,也发生了向上转型。
        computer.useDevice(new Keyboard());//正确写法


        computer.powerOff();
        System.out.println("==================");

        method(10.0);//正确写法,double-->double   10.0
        method(10);//正确写法,int-->double   10.0
        int a = 30;
        method(a);//正确写法,int-->double  30.0
    }

    public static void method(double num){
        System.out.println(num);
    }
}

输出结果:

3.final关键字 

final关键字也是代表最终、不可改变的。

常见四种用法:
1)可以用来修饰一个类
2)也可以用来修饰一个方法
3)还可以用来修饰一个局部变量
4)还可以用来修饰一个成员变量

1.final关键字用于修饰类

当final关键字用来修饰一个类的时候,格式:

public final class 类名称{
        //...
}

含义:当前类不能有任何的子类。

注意:一个类如果是final类,那么其中所有的成员方法都无法进行覆盖重写(因为没有子类)

public final class MyClass /*extends Object*/{

    public void method(){
        System.out.println("方法执行");
    }
}
//不能使用一个final类来作为父类
public class MySubClass /*extends MyClass*/ {
}

2.final关键字用于修饰成员方法 

当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写。

格式:

修饰符 final 返回值类型 方法名称(参数列表){
    //方法体
    }

注意事项: 对于类、方法来说,abstract关键字和final关键字不能同时使用,因为矛盾。

//定义父类
public abstract class Fu {

    public void method(){
        System.out.println("父类方法执行");
    }

    public abstract /*final*/ void methodAbs();
}
//定义子类
public class Zi extends Fu {
    @Override
    public void methodAbs() {

    }

    //    @Override
//    public void method() {
//        System.out.println("子类覆盖重写父类的方法");
//    }

    //错误写法。不能覆盖重写父类当中final的方法

}

3.final关键字用于修饰局部变量

//学生类
public class Student {

    private String name;

    public Student(){
    }

    public Student(String name){
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public class Demo01Final {

    public static void main(String[] args) {
        int num1 = 10;
        System.out.println(num1);//10
        num1 = 20;
        System.out.println(num1);//20

        //一旦使用final用来修饰局部变量,那么这个变量就不能进行更改。
        //一次赋值,终生不变。
        final int num2 = 200;
        System.out.println(num2);//200

//        num2 = 250;//错误写法,不能改变
//        num2 = 200;//错误写法

        //正确写法,只要保证有唯一一次赋值即可
        final int num3;
        num3 = 30;

        //对于基本类型来说,不可变说的是变量当中的数据不可改变
        //对于引用类型来说,不可变说的是变量当中的地址值不可变

        Student stu1 = new Student("张靓颖");
        System.out.println(stu1);
        System.out.println(stu1.getName());//张靓颖
        stu1 = new Student("周笔畅");
        System.out.println(stu1);
        System.out.println(stu1.getName());
        System.out.println("==================");

        final Student stu2 = new Student("高圆圆");
//        stu2 = new Student("霍建华");//错误写法,final引用类型变量,其中的地址值不可改变。
        System.out.println(stu2.getName());//高圆圆
        stu2.setName("高高圆圆圆");
        System.out.println(stu2.getName());//高高圆圆圆
    }
}

4.final关键字用于修饰成员变量

对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样是不可变。

1)由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值。
2)对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。二者选其一。
3)必须保证类当中所有的重载的构造方法,都最终会对final的成员变量进行赋值。
public class Person {

    private final String name/* = "关晓彤"*/;

    public Person() {
        name = "鹿晗";
    }

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

//    public void setName(String name) {
//        this.name = name;
//    }
}

4.四种权限修饰符

Java中有四种权限修饰符:
                   public  >  protected >  (default) >  private
 同一个类:我自己    可以        可以          可以        可以
 同一个包:我邻居    可以        可以          可以       不可以
 不同包子类:我儿子   可以        可以            不可以     不可以
 不同包非子类:陌生人   可以       不可以           不可以     不可以
注意事项:(default)并不是关键字“default”,而是根本不写。

 

ADS基础教程24 - Gerber文件的导入 一、引言二、基本概念1.仿真文件下载2.仿真文件介绍二、导入步骤1.新建workspace2.选择Layout结构3.导入设计4.选择文件类型5.导入文件6.预览文件内容7.铜皮离散问题四、总结选择。通过本文章结束,可以了解ADS中如何将导入Gerber文件,并且对导入的铜皮进行合并。下一步就针对导入的文件进行层叠设置和编辑。END!}}END! 阅读详情

相关推荐

Axure RP 10表单数据提交制作

本文介绍了如何使用Axure RP 10实现表单数据提交。

Peppaaa的博客 990

java中的instanceof关键字详解

这里使用了泛型`T`来声明方法参数,并指定它必须扩展自`Animal`类。这限制了方法参数的类型必须是`Animal`或其子类。由于`instanceof`运算符可能会导致代码变得冗长和复杂,特别是在深度嵌套的`if`语句中,它可能会降低代码的可读性。`instanceof`是Java中的一个二元运算符,用于在运行时检查对象是否是特定类或其任何子类的实例。这里,如果对象引用是类或其子类的实例,则表达式的结果为`true`;为了更好地理解`instanceof`运算符,我们将通过几个示例来展示其用法。

qa3629723的博客 1281

Python量化投资入门教程:从零构建你的第一个交易策略

量化投资教程以数学模型和计算机程序实现超额收益,选用Python工具链完成数据获取、策略构建及回测。通过移动平均线交叉策略示例,展示数据预处理、信号生成、收益计算及可视化全流程,结合收益率、最大回撤和夏普比率评估策略,并建议参数优化与策略融合提升稳健性。

ylmx5201314的博客 2456

Java学习,instanceof 关键字用法

instanceof是Java一个二元操作符,类似于==,>,< 等操作符,instanceof是Java保留关键字。它的作用是测试,它左边的对象是否是它右边的类的实例,返回boolean数据类型。instanceof 关键字,通常用于多态情况下,当有一个父类引用指向一个子类对象时,可以使用 instanceof 来检查,这个引用实际上指向的是哪个类的实例。// Animal 对象。// 使用 instanceof 检查对象类型。// 子类 Dog 继承Animal。// 子类Cat 继承Animal。

五味香的专栏 478

利用Virtuoso IC 618进行LDO稳定性分析与补偿设计

本文详细介绍了如何利用Virtuoso IC 618进行LDO稳定性分析与补偿设计。通过搭建仿真环境、运行STB分析诊断环路问题,并深入探讨密勒补偿、调零电阻等关键技术,帮助工程师在Virtuoso平台中高效完成LDO的稳定性优化与验证,确保芯片在各种工艺角下的鲁棒性。

weixin_29170327的博客 162

三维重建之条纹投影结构光(一)

该系列为条纹投影结构光学习笔记,一共分为四篇。第一篇记录文献阅读的笔记,对重要知识点进行摘录介绍。 本篇以理论知识推导为主,主要从以下三个方面进行介绍,首先介绍条纹投影的三角测量原理;然后介绍相位主值的求解和相位展开;最后介绍相位和高度的模型,即相高模型。本篇博文不涉及具体的代码实现。 条纹投影结构光测量原理 ...

beyond951的博客 3万+

JAVA 之"instanceof"

 "instanceof" 用于判断 左侧是否为右侧的实例对象,返回值为布尔型。可是最近我却常常发现许多同学对于instanceof的使用还不是很熟悉,可能开始接触的时候都不知道,左边、右边分别该写什么。这里我将我的理解写下,希望能便于大家的理解。 简单的解释如下: 如果   A a=new A()   正确  ====》 a instanceof A   返回 true

while(true) 2196

SystemVerilog实战:AXI Stream协议从零搭建(附完整代码解析)

本文详细介绍了如何使用SystemVerilog从零搭建AXI Stream协议,包括核心信号解析、接口设计、主从设备实现及验证环境构建。通过完整的代码示例和工程实践技巧,帮助开发者掌握AXI Stream在FPGA/ASIC设计中的高效数据传输方法,特别适合视频处理和网络数据传输等应用场景。

weixin_29207439的博客 360

22-04-19 西安 javaSE(11)多态、instanceOf关键字、 实例成员内部类、静态成员内部类、标准局部内部类、匿名内部类

多态:在程序中我们将子类对象或实现类对象赋值给父类类型的引用或父接口类型的引用的现象 多态的前提条件: 1.在程序中具有继承关系或者实现关系 2.程序中必须要有方法的重写(没有方法的重写也可以构成多态,但是这样的多态没有任何意义) 衍生:多态只和对象实例方法有关,和其他成员内容无关 3.如果是继承关系,父类的引用指向子类对象。 如果是实现关系,父接口的引用指向子类对象。 多态关系构造器特点: 多态关系中,无需考虑构造器的执行特点,因为和以前的执行流程一模一样。构造器和多......

m0_56799642的博客 417

CANoe_Demo_下载以及安装教程

CANoe Demo下载安装流程

Jar_Lee的博客 1万+

虚拟网络的“隐形盾”:C#如何用代码把DDoS踢出门?

本文分享了如何用C#防御DDoS攻击的实战经验。通过三种核心防御策略:1)基于IP的速率限制中间件,使用滑动时间窗口算法控制请求流量;2)自动IP封禁服务,通过特征检测识别恶意IP并加入黑名单;3)优化数据库连接池和HTTP客户端连接池,合理配置资源参数。文中提供了详细的C#代码实现,包括限流中间件、IP封禁服务和连接池优化方案,并分享了生产环境中的调优经验,如配合Redis实现分布式限流、使用fail2ban自动封禁等技巧,帮助开发者构建更健壮的防御体系。

墨夶的博客 329

Java多态

多态的概述: 代码当中体现多态性,其实就是一句话:父类引用指向子类对象。 格式: 父类名称 对象名 = new 子类名称(); 或者: 接口名称 对象名 = new 实现类名称(); public class Demo01Multi { public static void main(String[] args) { // 使用多态的写法 // 左侧父类的引用,指向了右侧子类的对象 Fu obj = new Zi(); obj.m

读书郎 503

【nvidia-B200】实际生产报错NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:601

升级 NVIDIA 驱动到 R545/R550 数据中心版本(解决 IOVA bug,这是性能差的根本原因);重启服务器(清理驱动残留资源,消除日志中的 NVRM 错误);验证 NVLink/PCIe 链路(确保 8 卡互联使用高速链路,而非单卡 PCIe 共享带宽)。完成这 3 步后,ncccl-test的all_reduce带宽应能提升至100GB/s 以上(取决于服务器的 NVLink/NVSwitch 配置),恢复正常性能。

jundao1997的专栏 652

Java 多态、包、final、权限修饰符、静态代码块

Java 包是管理Java代码的一个重要工具,它不仅能够帮助开发者组织代码结构,还能够提供访问控制和命名空间的管理功能。这是因为多态性主要关注通过同一个接口(父类引用)调用不同类(子类)中的方法时,如何根据对象的实际类型来执行相应的方法版本。关键字是Java中一个重要的工具,它通过限制类的继承、方法的重写和变量的修改,帮助开发者编写更安全、更稳定的代码。接口中的方法默认是抽象的,需要类来实现。关键字时,需要根据具体的需求和设计考虑来决定是否使用,以及如何使用,以确保代码的可读性和可维护性。

weixin_74521994的博客 1638

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

详析java中的关键字和权限修饰

各位小伙伴们大家好,欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚

扎哇太枣糕的笔记博客 1397

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java13-多态、包、权限修饰符、final

多态: 是指同一行为,具有多个不同表现形式。包在操作系统中其实就是一个文件夹。包是用来分门别类的管理技术,不同的技术类放在不同的包下,方便管理和维护。包名的命名规范包名一般是公司域名的倒写。例如:黑马是,包名就可以定义成com.itheima.技术名称。包名必须用”.“连接。包名的每个路径名必须是一个合法的标识符,而且不能是Java的关键字。Java提供了final关键字,表示修饰的内容不可变。final: 不可改变,最终的含义。可以用于修饰类、方法和变量。类:被修饰的类,不能被继承。

m0_73902080的博客 2415

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

几个关键字(final、static、权限修饰符、super、this、instanceof)

关键字

yu的博客 568

Java面向对象编程--多态、包、权限修饰符、final

多态: 是指同一行为,具有多个不同表现形式。前提【重点】1. 有继承或者实现关系2. 方法的重写【意义体现:不重写,无意义】3. 父类引用指向子类对象【格式体现】> 父类类型:指子类对象继承的父类类型,或者实现的父接口类型。

2303_80261946的博客 732

21天学会Java之(Java SE第五篇):继承、常用的关键字、封装及权限修饰符、多态

文章目录继承常用的关键字this关键字static关键字super关键字final关键字封装及权限修饰符封装的作用及其优点权限修饰符封装的使用细节多态多态的概念多态的使用要点对象的转型instanceof运算符类型自动提升及强制类型转换条件多态的例子 面向对象的三个基本特征是:封装、继承、多态 继承 继承可以使我们更容易实现类的扩展,在现实世界中比比皆是。并且继承实现了代码的重用,不用再重新发...

小志Coding笔记 1万+

Java面向对象多态、包、final关键字、权限修饰符

摘要: Java面向对象核心知识点总结: 多态规则:父类引用指向子类对象时,变量调用看父类,方法调用看子类(需重写)。通过强制转型(instanceof判断)解决子类独有方法调用问题,体现解耦扩展优势。 包管理:包通过文件夹结构分类管理类,命名需反写域名+功能,全类名需配合import导包简化代码。 final关键字: 修饰类:不可继承(如String类) 修饰方法:不可重写(如Object的wait()) 修饰变量:变为常量(基本类型值不可变,引用类型地址不可变但内容可修改) 关键应用:多态实现统一参数处

mifengxing的博客 283

java final、static等关键字的用法

final、static等关键字的用法 extends 子类继承父类的非私有的属性和方法 instanceof 可以判断某个对象是不是指定类型 method 方法 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口 super 我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。super.age supe...

fyyxc的博客 240

JAVA语言基础课程(10)-- 多态,final关键字,权限修饰符

2.多态的格式与使用 3.多态中成员变量的使用特点

qq_41954459的博客 464

[java] 多态、包、final篇

原因是:父类类型相对与子类来说是大范围的类型,Animal是动物类,是父类类型。:父类类型向子类类型向下转换的过程,这个过程是强制的。一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制类型转换的格式,是向下转型。:多态本身是子类类型向父类类型向上转换(自动转换)的过程,这个过程是默认的。基本类型的局部变量,被final修饰后,只能赋值一次,不能再更改。等,都是被final修饰的,目的就是供我们使用,而不让改变其内容。父类类型:指子类对象继承的父类类型,或者实现的父接口类型。

2301_77946674的博客 907

Day07_多态、final关键字、权限修饰符、内部类、

文章目录1.多态1.在多态的代码当中,成员变量的访问规则是:2.在多态的代码当中,成员方法的访问规则是:3.多态和继承4.上转型和下转型5.instanceof的使用6.笔记本案例 1.多态 1.在多态的代码当中,成员变量的访问规则是: 多态 =上转型 //多态和上转型是等价的 成员变量:编译看左边,运行还看左边。(左边和右边指的是等号的左边和等号的右边) 成员方法:编译看左边,运行看右边。(左边和右边指的是等号的左边和等号的右边) 成员变量:编译看左边,运行还看左边。 Fu obj = new Zi

weixin_45014721的博客 253

JAVA基础-多态&包&final关键词&权限修饰符&代码块

多态: 是指同一行为,具有多个不同表现形式。从上面案例可以看出,Cat和Dog都是动物,都是吃这一行为,但是出现的效果(表现形式)是不一样的。前提【重点】有继承或者实现关系方法的重写【意义体现:不重写,无意义】父类引用指向子类对象【格式体现】父类类型:指子类对象继承的父类类型,或者实现的父接口类型。​ 学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写。如果有一个方法我不想别人去改写里面内容,该怎么办呢?Java提供了final关键字,表示修饰的内容不可变。final。

weixin_57379543的博客 1047

关键字

关键字 instanceof 关键字 Java提供了 instanceof 关键字,给引用变量做类型的校验 变量名 instanceof 数据类型 如果变量属于该数据类型,返回true。 如果变量不属于该数据类型,返回false。 ...

qq_42121746的博客 400
上一篇: Java--继承父类并实现多个接口、接口之间的多继承、多态的格式和使用、多态中成员变量的使用特点、以及对象的向上转型和向下转型
下一篇: Java--内部类、成员内部类的定义和使用、内部类的同名变量访问、局部内部类的定义及final问题、匿名内部类、类和接口作为成员变量类型
追光的海马
博客等级 码龄6年 4粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值