【Java学习】语法:包、权限修饰符、final、常量、枚举、抽象类、接口

news2024/10/7 6:43:18

文章目录

    • 一、包
    • 二、权限修饰符
    • 三、final
    • 四、常量
    • 五、枚举
    • 六、抽象类
    • 七、接口

一、包

什么是包?

  • 包是用来分门别类的管理各种不同类的,类似于文件夹、建包利于程序的管理和维护
  • 建包的语法格式: package公司域名倒写.技术名称。报名建议全部英文小写,且具备意义
package com.it.javabean;
public class student{ }
  • 建包语句必须在第一行,一般IDEA工具会帮助创建

导包

  • 相同包下的类可以直接访问不同包下的类必须导包,才可以使用!导包格式: import包名.类名;

二、权限修饰符

什么是权限修饰符?

  • 权限修饰符:是用来控制一个成员能够被访问的范围
  • 可以修饰成员变量,方法,构造器,内部类,不同权限修饰符修饰的成员能够被访问的范围将受到限制。

权限修饰符的分类和具体作用范围:

  • 权限修饰符:有四种作用范围由小到大(private ->缺省->protected - > public )
    在这里插入图片描述

三、final

final的作用

  • final关键字是最终的意思,可以修饰(类、方法、变量)
  • 修饰类∶表明该类是最终类,不能被继承。
  • 修饰方法:表明该方法是最终方法。不能被重写。
  • 修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次)。

final修饰变量的注意

  • final修饰的变量是基本类型:那么变量存储的数据值不能发生改变
  • final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的。就是可以用T.setname();改变。

四、常量

常量

  • 常量是使用了public static final修饰的成员变量,必须有初始化值,而且执行的过程中其值不能被改变。
  • 常量的作用和好处:可以用于做系统的配置信息,方便程序的维护,同时也能提高可读性

常量的执行原理

  • 在编译阶段会进行“宏替换”,把使用常量的地方全部替换成真实的字面量。这样做的好处是让使用常量的程序的执行性能与直接使用字面量是一样的

优雅

  • 见名知意,信息的标志与分类,可读性高,实现软编码

五、枚举

enum枚举的概述

  • 枚举是Java中的一种特殊类型
  • 枚举的作用:“是为了做信息的标志信息的分类”。

在这里插入图片描述
在这里插入图片描述
枚举的特征:

  • 枚举类都是继承了枚举类型:java.lang.Enum
  • 枚举都是最终类,不可以被继承
  • 构造器的构造器都是私有的,枚举对外不能创建对象。
  • 枚举类的第一行默认都是罗列枚举对象的名称的
  • 相当于多例模式
public enum Orientation{
	UP,DOWN,LEFT,RIGHT;
}

switch 与 枚举自动结合使用

六、抽象类

1、抽象类、抽象方法是什么样的?

  • 都是用abstract修饰的;抽象方法只有方法签名,不能写方法体。
  • 一个类中定义了抽象方法,这个类必须声明成抽象类。

2、抽象类基本作用是啥?

  • 作为父类,用来被继承的。

3、继承抽象类有哪些要注意?

  • 一个类如果继承了抽象类,那么这个类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。

案例
系统需求

  • 某加油站推出了2种支付卡,一种是预存10000的金卡,后续加油享受8折优惠,另一种是预存5000的银卡,后续加油享受8.5折优惠
  • 请分别实现2种卡片进入收银系统后的逻辑,卡片需要包含主人名称,余额,支付功能。

代码只写了金卡:
Card.java

package com.ith.d6_abstract_test;

public abstract class Card {
    private String userName;
    private double money;

    /**
     * 支付方法
     * 抽象方法
     */
    public abstract void pay(double money2);


    public String getUserName() {
        return userName;
    }


    public void setUserName(String userName) {
        this.userName = userName;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

}

GoldCard.java

package com.ith.d6_abstract_test;

public class GoldCard extends Card {
    @Override
    public void pay(double money2) {
        System.out.println("您当前消费:" + money2);
        System.out.println("您卡片当前余额是:"+getMoney());
        double rs = money2*0.8;
        System.out.println("您实际支付:" + rs);
        setMoney(getMoney()-rs);
    }
}

Test.java

package com.ith.d6_abstract_test;

public class Test {
    public static void main(String[] args) {
        GoldCard c = new GoldCard();
        c.setMoney(10000);
        c.setUserName("lll");

        c.pay(9000);
        System.out.println("剩余:" + c.getMoney());
    }
}

输出

您当前消费:9000.0
您卡片当前余额是:10000.0
您实际支付:7200.0
剩余:2800.0

特征和注意事项

  • 类有的成员(成员变量、方法、构造器)抽象类都具备

  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

  • 一个类继承了抽象类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。

  • 不能用abstract修饰变量、代码块、构造器。

  • 最重要的特征:得到了抽象方法,失去了创建对象的能力(有得有失)

模板方法
中学生与小学时都写一篇模板作文
Student.java

package com.ith.d7_abstract_template;

public abstract class Student {
    /**
     * 模板方法
     */
    public void write(){
        System.out.println("开头");
        System.out.println("正文:");
        //模板
        System.out.println(writemain());
        System.out.println("结尾~~");

    }

    public abstract String writemain();
}

StudentChild.java

package com.ith.d7_abstract_template;

public class StudentChild extends Student{

    @Override
    public String writemain() {
        return "StudentChild" ;
    }
}

StudentMiddle.java

package com.ith.d7_abstract_template;

public class StudentMiddle extends Student{

    @Override
    public String writemain() {
        return "StudentMiddle" ;
    }
}

Test.java

package com.ith.d7_abstract_template;

public class Test {
    public static void main(String[] args) {
        StudentMiddle s = new StudentMiddle();
        s.write();
        System.out.println("-----------");
        StudentChild s2 = new StudentChild();
        s2.write();
    }
}

输出

开头
正文:
StudentMiddle
结尾~~
-----------
开头
正文:
StudentChild
结尾~~

七、接口

接口的用法:

  • 接口是用来被类实现(implements)的,实现接口的类称为实现类。实现类可以理解成所谓的子类。
修饰符class 实现类implements接口1,接口2,接口3... {}
实现的关键字:implements
  • 从上面可以看出,接口可以被类单实现,也可以被类多实现

接口实现的注意事项:

  • 一个类实现接口,必须重写完全部接口的全部抽象方法,否则这个类需要定义成抽象类。

接口可以多继承
代码 gitee->zijin-jdd -> java_-strengthen_project ->d10_interface_extends

1、JDK8开始后新增了那些方法?

  • 默认方法:default修饰,实现类对象调用。
  • 静态方法:static修饰,必须用当前接口名调用
  • 私有方法: private修饰,jdk9开始才有的,只能在接口内部被调用。

2、接口注意事项

  • 1、接口不能创建对象(重要)
  • 2、一个类实现多个接口,多个接口中有同样的静态方法不冲突。
  • 3、一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类的。
  • 4、一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写该方法即可。
  • 5、一个接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WebRTC系列<二> 案例与工具

阅读关于webRTC的其他文章: WebRTC系列<一> 什么是WebRTC? WebRTC系列<二> 案例与工具 ---------------------------------案例--------------------------------- webrtc官网 : 官网示例代码github地址…

【Raspberry Pi】搭建NAS流媒体播放器 + ARIA2 + YAAW + 迅雷下载系统

由于种(gu)种(ji)原(cuo)因(wu)新买的Pi并没有用于任何项目上,看着它一天一天的封尘,于心不忍终于让它也做了点事。恰好这几天家里网络晚上有点卡&#xff0c…

数字集成电路设计(四、Verilog HDL数字逻辑设计方法)(二)

文章目录3. 时序电路的设计3.1 触发器3.1.1 最简单的D触发器3.1.2 带复位端的D触发器3.1.3 复杂功能的D触发器(没有太大必要)3.1.4 T触发器3.2 计数器3.2.1 二进制计数器3.2.2 (重要)任意进制计数器3.3 移位寄存器3.4 序列信号发生…

docker命令整理

第一次安装 查看docker是否安装成功 docker version 测试hello-world docker run hello-world –help 帮助 查看详细信息 docker info 搜索docker镜像网址:https://hub.docker.com/search 查看 查看cpu实时内存 docker stats 镜像关键字:images -…

MySQL-Redis进阶生成全局唯一ID

单体全局ID 场景一、随着我们商城规模越来越大,mysql的单表的容量不宜超过500W,数据量过大之后,我们要进行拆库拆表,但拆分表了之后,他们从逻辑上讲他们是同一张表,所以他们的id是不能一样的, …

阿里最新财报:中国商业分部收入下滑1%,年内股价累计下跌34%

11月17日,阿里巴巴集团(下称“阿里巴巴”,HK:09988、NYSE:BABA)公布2023财年第二季度(对应自然年2022年第三季度)业绩。财报显示,阿里巴巴2022年第三季度的收入为人民币2071.76亿元(…

[附源码]java毕业设计流浪动物领养系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

计算机中的加法器和比较器

本节展示了计算机中的加法器和比较器的底层实现电路设计。 加法器 计算机中加法器的实现依赖门的结构,如果是两个十进制进行加减,则首先把右边的两个0-9之间的数相加,它们的总和在0-18之间,如果答案是0-9之间,则直接写…

Vue--》详解vue组件及其组件化的使用

目录 Vue组件 非单文件组件 单文件组件 组件的组成部分 组件中定义methods方法 vue-cli中组件的使用步骤 vue-cli中注册全局组件 组件的props属性 props中的常用属性 组件间的样式冲突 Vue组件 vue是一个支持组件化开发的前端框架。什么是组件化开发?组件…

那些年我们遇到过的奇葩面试官

做了几年软件开发,我们都或多或少面试过别人,或者被别人面试过。大家最常吐槽的就是面试造火箭,进厂拧螺丝。今天就来吐槽一下那些奇葩(gou)一样的面试官 A 那是在我刚工作1年的时候,出去面试前端开发。 那…

虚拟筛选、高通量实验筛选化合物库

Kynurenine Pathway Library (含12,300种化合物) 靶向犬尿氨酸代谢途径关键酶的新型化合物库 KynureninePathway (犬尿氨酸途径, KP)是色氨酸代谢的主要途径,参与多个病理、生理过程。研究发现阿尔茨海默病、帕金森氏症等多种神经退行性疾病中的 KP 代谢产物水平…

hevc 继续色度半像素差值

1 前面已经讲了亮度的半像素差值,接下来讲一下色度的半像素差值。 亮度分量的运动估计已经精确到了1/4的精度,并且速度分量的分辨率是亮度分量的一般,所以色度插值需要精确到1/8的精度,色度分数像素插值按照基于离散余玄变换的4抽…

写代码有这20个好习惯,可以减少90%非业务的bug

每一个好习惯都是一笔财富,本文整理了写代码的20个好习惯,每个都很经典,养成这些习惯,可以规避多数非业务的bug!希望对大家有帮助哈,谢谢阅读,加油哦~ 修改完代码,记得自测一下 「改…

C++初探 5-2(while循环 do while循环 输入 二维数组)

目录 注 while循环 for 与 while 编写延时循环 do while循环 基于范围的for循环(C11) 循环和文本输入 使用原始的cin进行输入 使用cin.get(char)进行补救 使用不同的cin.get( ) 文件尾条件 另一个cin.get( )版本 嵌套循环和二维数组 初始化…

长视频又添新变数

配图来自Canva可画 互联网广告市场依旧没有等来春天。据QuestMobile数据显示,2021下半年,中国互联网广告市场规模为3578.2亿元,而在2022年上半年这一数值下降至2903.6亿元,且同比增长率为-2.3%。 反应到具体的互联网平台上&…

[附源码]java毕业设计流浪动物救助网站

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Zookeeper系列——概述

Zookeeper系列——概述Zookeeper官方文档模型结构模型的特点节点的类型持久节点(PERSISTENT)持久顺序节点(PERSISTENT_SEQUENTIAL)临时节点(EPHEMERAL)临时顺序节点(EPHEMERAL_SEQUENTIAL)安装Zookeeper启动进入容器连接zookeeper的cli配置文件(zoo_sample.cfg&…

基于微信小程序的足浴城消费系统设计与实现-计算机毕业设计源码+LW文档

小程序开发说明 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Mav…

m基于simulink的WCDMA通信链路仿真

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB代码预览 4.完整MATLAB程序 1.算法概述 W-CDMA由ETSI NTT DoCoMo作为无线介面为他们的3G网路FOMA开发。后来NTTDocomo提交给ITU一个详细规范作为一个象IMT-2000一样作为一个候选的国际3G标准。国际电信联盟(ITU) 最终接受W-CDM…

ESP32-WROOM-32 ESP32 wifi模块基本参数与引脚定义

基本参数: WiFi描述标准FCC/CE/TELEC/KCC/SRRC/NCC协议 802.11 b/g/n/e/i (802.11n,速度高达150Mbps) A-MPDU和A-MSDU聚合,支持0.4μS防护间隔 频率范围2.4GHz~2.5GHz(2400M~2483.5M)蓝牙描述协议符合蓝牙v4.2BR/EDR和BLE标准射频 具有-98dB…