JAVA选择题笔试:static成员与非static成员、父类子类方法的继承、接口与抽象类、final的使用

0、前言

        本文针对一些java基础知识的一些考点做出解析。

1、静态成员 与 非静态成员

        静态变量与静态方法都是静态成员。

 先说静态变量与普通成员变量的区别,例如如下两个变量:

public class Demo {public static String A = "静态变量";public String B = "实例变量,又称成员变量";
}

        A是静态,B是成员,从jvm层面来讲,他们有以下区别:
理解原理:

  1. 静态变量是在类加载时创建的:随着类的消失而消失,静态变量与类共存亡。
    成员变量是在对象创建后而存在的,:随着对象被回收而释放,成员变量与对象共存亡。
  2. 由第一点可推导:

    静态变量可以被对象调用,也可以通过类名直接访问(因为无需创建对象static变量就存在)

    成员变量因为是在类的实例化过程中创建的,所以需要通过类的实例(也就是对象)调用,没有实例化就没法调用。
     
  3. 静态方法内不能直接调用非静态方法,因为没有创建实例对象(如果调用,将不知道非静态方法属于哪个对象,所以会报错。)
    public class Demo {public static void staticMethod() {// 直接调用非静态方法:编译报错instanceMethod();}public void instanceMethod() {System.out.println("非静态方法");}
    }

    相对的,成员方法(非静态方法)能够直接调用静态方法。

总结:静态方法只能访问静态成员(包括静态变量和静态方法)
           实例方法则可以访问实例成员(包括实例变量和实例方法)以及静态成员。

2. 父类子类方法的继承重写问题

         看一个简单的例子,我们知道,子类重写父类方法必须”三个同“的特点:
         返回类型、名称、输入参数都相同。

class A{public void sb(){System.out.println("A.sb");}
}
class B extends A{
//1.普通的重写
//    public void sb(){
//        System.out.println("B.sb");
//    }//2.名称、输入参数一样,但返回类型不同:重写失败。编译错误
//因为虽然返回类型不同,但系统调用sb的时候无法区分是父子哪个sb方法,并且这也不是方法重载。
//但要注意,如果返回类型是父类的派生类,也是可以的。public int sb(){System.out.println("BBB");return 10;}//3.只要输入参数不同,就已经不是同一个sb方法,尽管名称都叫sb:
// 不是重写,但能编译,相当于新方法(即,方法重载)
// 例如,我们可以通调用sb(10)和sb()这两种方式对应两个sb方法,这是可以区分的public void sb(int input){System.out.println(input);}
//同理:public int sb(int input){System.out.println(input);return 1;}
}

其他补充:

        只有返回类型不同的方法并不足以使方法成为重载,重载要求参数列表必须有所区别。

3、接口与抽象类

接口的性质:
        接口内的字段(常量)类型都必须是public static final的。Java8开始,可以省略,直接定义常量。如int a = 1;

区别:

  1. 定义方式:抽象类使用 abstract 关键字定义,可以包含抽象方法和具体方法;接口使用 interface 关键字定义,只能包含抽象方法和常量。

  2. 实现方式:一个类可以继承(extends)一个抽象类,并且可以同时实现多个接口(implements)。

  3. 构造方法:抽象类可以有构造方法,而接口不能有构造方法。抽象类的构造方法在被子类实例化时会被调用。

  4. 方法实现:抽象类中的抽象方法可以由子类选择性地实现或覆盖,而接口中的所有方法必须在实现类中被实现

  5. 属性和变量:抽象类可以有实例变量、静态变量和普通方法,而接口只能有常量(public static final)和抽象方法。

  6. 设计目的:抽象类用于创建具有共同特征的类之间的继承关系,它可以提供默认的实现和通用的行为;接口用于定义类应该具备的行为,以实现多态性和代码重用。

  7. 多继承:一个类只能继承一个抽象类,但可以实现多个接口。这是因为Java不支持多重继承,但可以通过实现多个接口来达到类似的效果。

4. 数据类型大小

        红字代表字节数,1字节==8位

 

 5.final与static

        对于final类型的变量,如果不加static,可以有两种方式给它赋值:
        (1)声明变量时直接赋值(2)在构造方法中完成赋值(全部的构造方法都得赋值)

        而如果是static类型的final变量,那么类初始化的时候就必须赋值了 ,所以只有"方法(1)"

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

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

相关文章

draggable里包裹的卡片,卡片里有个input,点击input聚焦无效。

在input标签上加pointerdown.stop.native <el-input placeholder"请输入" pointerdown.stop.native v-model"dataForm.nickName" :style"{width:180px}" suffix-icon"el-icon-search" lazy />

HCIP-7.3QinQ技术原理、配置链路聚合Eth-Trunk

HCIP-7.3QinQ技术原理、配置&链路聚合Eth-Trunk 1、QinQ概述1.1、QinQ实现方式&#xff1a;1.2、QinQ封装结构&#xff1a;1.3、QinQ的分类&#xff1a;1.3.1、基于端口的QinQ1.3.2、灵活QinQ 2、链路聚合Eth-Trunk2.1、Eth-Trunk基本原理2.2、手工聚合模式2.2.1、配置接口…

FinalShell连接不上Ubantu

解决方法 1.ssh服务问题 1.先安装openssh-server服务 sudo apt install aopenssh-server 2.重启ssh服务 sudo systemctl restart ssh 2.防火墙问题 1. 直接关闭防火墙(最省时) ufw stop 2. 开放FinalShell要连接的端口号,下图。 ufw allow 22

html_4——知识总结

html_4——知识总结 一、计算机基础知识二、html4总结2.1 html基本结构2.2 全局属性-id,class,style,dir,title,lang2.3 格式排版标签-div,p,h1-h6,br,hr,pre2.4 文本标签-span,en,strong,del,ins,sub,sup2.5 图片标签-img:src,alt,width,height,boder2.6 超链接-a:herf,target…

STM32实战项目—停车计费系统

文章目录 一、任务要求1.1 概述1.2 串口收发1.2.1 串口输出内容1.2.2 串口接收内容 1.3 说明 二、实现思路2.1 指令判别2.1 车辆进入2.2 车辆驶出2.3 费率调整 三、程序设计3.1 串口接收消息处理3.2 车辆驶入处理函数3.3 车辆驶出处理函数3.4 费率调整处理函数 题目原型是第十二…

【服务器数据恢复】raid5故障导致LUN无法访问的数据恢复案例

服务器数据恢复环境&#xff1a; 一台服务器中有一组由数块SAS硬盘组建的RAID5阵列&#xff0c;阵列中有1块热备盘&#xff0c;上层部署OA以及Oracle数据库。 服务器故障&#xff1a; 该磁盘阵列中有2块硬盘出现故障先后离线&#xff0c;RAID5阵列瘫痪&#xff0c;上层LUN无法…

【解决openGauss安装后yum、ssh命令无法使用】

【解决openGauss安装后yum、ssh命令无法使用】 &#x1f53b; 一、操作系统及数据库版本&#x1f530; 1.1 操作系统版本&#x1f530; 1.2 openGauss数据库版本 &#x1f53b; 二、关于openGauss安装&#x1f53b; 三、问题详情&#x1f530; 3.1 使用yum命令报错&#x1f530…

【数据库原理与实践】知识点归纳(下)

第6章 规范化理论 一、关系模式设计中存在的问题 关系、关系模式、关系数据库、关系数据库的模式 关系模式看作三元组&#xff1a;R < U,F >&#xff0c;当且仅当U上的一个关系r满足F时&#xff0c;r称为关系模式R < U,F >的一个关系 第一范式&#xff08;1NF&…

python最佳开发环境组合(pycharm+anaconda)

一、pycharmanaconda是python 最佳开发环境组合 1.pycharm与vscode对比 pycharm社区版与pycharm pro pycharm pro 与vscode 二、anaconda Anaconda Python 集成包 工具箱。 所以没有必要下载传统Python (cPython)个人十分不推荐使用传统python做科学计算&#xff0c; 一来…

SpringBoot-集成FTP(上传、下载、删除)

目录 一、引入依赖 二、配置文件 三、Controller层 四、Service层 五、相关工具类 由于服务在内网部署&#xff0c;需要使用ftp服务器管理文件&#xff0c;总结如下 一、引入依赖 <!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <depen…

Web3在HTML中获取 MetaMask 启用的用户列表

当然 我们还是要先启动ganache环境 然后 通过MetaMask 导入一些用户 然后 我们需要在页面中引入 web3.min.js 如果您还没有这个文件 可以查看我的文章web3.js获取导入 然后我访问官网 https://learnblockchain.cn/docs/web3.js/web3-eth.html#getchainid 打开后 先来到 web3.…

apple pencil二代建议买吗?性价比高的触控笔测评

因为ipad的强大功能&#xff0c;不少人已经开始使用ipad了&#xff0c;随之也越来越普及。大屏幕上的学习效果很好&#xff0c;但用来刷剧以及打游戏就没什么意思了。如果你不想买一支价格很贵的苹果电容笔&#xff0c;或是只想用来做笔记&#xff0c;你可以考虑一下平替电容笔…