Java项目总结3

1.抽象类与抽象方法

注意:

抽象类不能实例化

抽线类中不一定有抽i像方法,有抽象方法的类一定是抽象类

可以有构造方法

抽象类的子类要么重写抽象类中的所有抽象方法,要么是抽象类

抽象类的作用:

抽取共性时,无法确定方法体,就把方法定义为抽象的。

强制让子类按照某种格式重写。

抽象方法所在的类,必须是抽象类

抽象类和抽象方法的格式?

public abstract  返回值类型 方法名 (参数列表);

public abstract class 类名{}

抽象类在多态方面的继承:

// 抽象类和抽象方法需要被 abstract 关键字修饰
abstract class Shape {
    // 抽象类中的方法一般要求都是抽象方法,抽象方法没有方法体
    abstract void draw();
}
// 当一个普通类继承一个抽象类后,这个普通类必须重写抽象类中的方法
class Cycle extends Shape {
    @Override
    void draw() {  // 重写抽象类中的draw方法
        System.out.println("画一个圆圈");
    }
}
 
public class Test4 {
    public static void main(String[] args) {
        //Shape shape = new Shape();  抽象类虽然不能直接实例化
        // 但可以把一个普通类对象传给一个抽象类的引用呀,即父类引用指向子类对象
        Shape shape = new Cycle(); // 这称作:向上转型
        
        /*Cycle cycle = new Cycle();
          Shape shape = cycle // 这是向上转型的另一种写法
         */
        shape.draw();         // 通过父类引用调用被子类重写的方法
    }
}

2.接口

接口:就是一种规则

例:兔子不会游泳,而青蛙和狗类会,则不能放在父类里,则需要创建一个具有游泳功能的接口。

接口设计规则:

  1. 抽取派生类的共同属性和行为抽到超类中,
  2. 抽象类:如果子类方法都一样设计为普通方法,如果子类的行为不是有一致的就写成抽象方法
  3. 接口:抽取部分子类相同行为,抽取到接口中——多继承,多实现,接口是对单继承的扩展

接口的定义与使用:

//接口定义的关键字interface
//接口都需要有实现类
public interface userService {
    //接口中的所有定义都是抽象的 public abstract
    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);
}
public interface timeService {
    void timer();
}
//类可以实现接口 implements
//实现了接口的类,就需要重写接口中的方法
//利用接口实现多继承
public class userServiceImpl implements userService,timeService{
    @Override
    public void add(String name) {
 
    }
 
    @Override
    public void delete(String name) {
 
    }
 
    @Override
    public void update(String name) {
 
    }
 
    @Override
    public void query(String name) {
 
    }
 
    @Override
    public void timer() {
 
    }
}

接口的换代升级:

适用于添加接口新功能

3.内部类

内部类表示的事物是外部类的一部分,内部类单独出现没有任何意义。

内部类的访问特点:

1.内部类可以直接访问外部类的成员,包括私有

2.外部类要访问内部类的成员,必须创建对象

什么时候用到内部类?

例:需要录入车的信息,那么发动机的品牌,颜色,型号就可以当一个内部类

下图中Engine为内部类

内部类主要分为:静态内部类,非静态内部类。(static静态修饰)

注意:非静态内部类里不能有静态方法,静态成员变量,静态初始化块。

main获取内部类的对象:

1.Car.Engine r=new Car().new.Engine();直接创建(格式:外部类名.内部类名 对象名=外部类对象.内部类对象)

2.外部类编写方法,对外部类提供内部对象(private)

非静态外部类访问内部类

public class jtai {
    private String prop="外部变量";
    private class InClass {
        private String prop = "内部变量";

        public void print() {
            String prop = "局部变量";
            System.out.println("外面 " + jtai.this.prop);
            System.out.println("内部 " + this.prop);
            System.out.println("局部 " + prop);
        }
    }
public void test() {
    InClass obj=new InClass();
    obj.print();
}
    public static void main(String[] args) {
        new jtai().test();
    }
}

非静态内部类访问外部类

// 外部类
class OuterClass {
    private int outerField = 10;

    // 内部类
    class InnerClass {
        void accessOuter() {
            System.out.println("访问外部类的成员变量: outerField = " + outerField);
            System.out.println("调用外部类的方法:");
            outerMethod();
        }
    }

    // 外部类的方法
    void outerMethod() {
        System.out.println("这是外部类的方法");
    }

    // 外部类的入口方法
    public static void main(String[] args) {
        // 创建外部类的对象
        OuterClass outerObj = new OuterClass();
        // 创建内部类的对象
        OuterClass.InnerClass innerObj = outerObj.new InnerClass();
        // 调用内部类访问外部类的方法
        innerObj.accessOuter();
    }
}

静态内部类:只能访问外部类中的静态变量和静态方法,如果想要访问非静态的想要创建对象。

静态内部类访问外部类:

// 外部类
class OuterClass {
    private static int outerStaticField = 100;
    private int outerField = 10;

    // 静态内部类
    static class StaticInnerClass {
        void accessOuter() {
            // 访问外部类的静态成员变量
            System.out.println("访问外部类的静态成员变量: outerStaticField = " + OuterClass.outerStaticField);
            
            // 若要访问外部类的非静态成员变量,需要通过外部类的对象访问
            OuterClass outerObj = new OuterClass();
            System.out.println("访问外部类的非静态成员变量: outerField = " + outerObj.outerField);
            
            // 若要调用外部类的方法,也需要通过外部类的对象访问
            outerObj.outerMethod();
        }
    }

    // 外部类的方法
    void outerMethod() {
        System.out.println("这是外部类的方法");
    }

    // 外部类的入口方法
    public static void main(String[] args) {
        // 创建静态内部类的对象
        StaticInnerClass innerObj = new StaticInnerClass();
        // 调用内部类访问外部类的方法
        innerObj.accessOuter();
    }
}

外部类访问静态内部类

// 外部类
class OuterClass {
    private static int outerStaticField = 100;

    // 静态内部类
    static class StaticInnerClass {
        void innerMethod() {
            System.out.println("这是静态内部类的方法");
        }
    }

    // 外部类的方法
    void outerMethod() {
        System.out.println("这是外部类的方法");

        // 在外部类的方法中创建静态内部类的对象并调用其方法
        StaticInnerClass innerObj = new StaticInnerClass();
        innerObj.innerMethod();
    }

    // 外部类的入口方法
    public static void main(String[] args) {
        // 在外部类的静态方法中创建静态内部类的对象并调用其方法
        StaticInnerClass innerObj = new StaticInnerClass();
        innerObj.innerMethod();

        // 在外部类的静态方法中创建外部类的对象并调用其方法
        OuterClass outerObj = new OuterClass();
        outerObj.outerMethod();
    }
}

有没有发现一个现象即静态与非静态的相互访问都需要用到关键字new,因为静态会开辟空间,呢哇也是。

注意:使用静态内部类比使用非静态内部类简单很多,只要把外部类当成静态内部类的包空间即可。

匿名内部类

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux:网络配置命令

目录 一、查看网络接口信息 ifconfig 二、修改网络配置文件 三、设置网络接口参数 ifconfig 四、查看主机名称 hostname 五、查看路由表条目route 5.1、查看路由 5.2、添加、删除静态路由条目 5.3、添加、删除默认网关记录 六、netstat命令 七、ss 命令 八、测试网络…

java web 部分

jsp作用域由大到小 过滤器有哪些作用? 过滤器的用法?(对客户端的请求统一编码和对客户端进行认证) JSP和Servlet中的请求转发分别如何实现? JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么…

恭喜!H医生一个月内荣获美国芝加哥大学访问学者邀请函

➡️【院校背景】 芝加哥大学(英文:The University of Chicago,简称UChicago、“芝大”)由石油大王约翰洛克菲勒于1890年创办,坐落于美国伊利诺伊州芝加哥市,一所私立研究型大学,属于全球大学校…

vue3 滚动条滑动到元素位置时,元素加载

水个文 效果 要实现的思路就是,使用IntersectionObserver 检测元素是否在视口中显示,然后在通过css来进行动画载入。 1.监控元素是否视口中显示 const observer new IntersectionObserver((entries) > {entries.forEach((entry) > {if (entry.i…

web平台—apache

web平台—apache 1. 学apache前需要知道的知识点2. apache详解2.1 概述2.2 工作模式2.3 启动apache网站整体流程2.4 相关文件保存位置2.5 配置文件详解 3. apache配置实验实验1:设置apache的目录别名实验2:apache的用户认证实验3:虚拟主机 (重…

基于Arduino平台开源小车的初步使用体验

创作原因:偶然有机会接触到基于Arduino平台的开源智能小车,初步使用后与大家分享。因使用时间不常,可以纯当个乐子看看,感谢大家的阅读! 图:一款基于Arduino平台的开源小车 一、开发环境 Misly&#xff1…

明星代言方式8种助力品牌占领市场-华媒舍

1. 明星代言的重要性和市场价值 明星代言是一种常见的品牌推广方式,通过联系知名度高的明星来推广产品或服务,从而提升品牌的知名度和美誉度。明星代言能够借助明星的影响力和粉丝基础,将品牌信息传达给更广泛的受众,从而提高销量…

Linux:ollama大模型部署

目录 Ollama 是一个能在本地机器上轻松构建和运行大型语言模型的轻量级、可扩展框架,适用于多种场景,具有易于使用、资源占用少、可扩展性强等特点。 1.安装下载ollama 2.为 Ollama 创建一个用户 3.为ollama创建服务文件 4.启动ollama服务 5.拉取语…

6月28日华为云数据库斯享会上海站,NineData技术总监薛晓乐受邀并带来主题分享

6月28日(周五),华为云数据库斯享会即将在上海举办,将与的开发者朋友们一起进行数据库技术交流!NineData 技术总监薛晓乐受邀参会,并将带来《企业级数据库 DevOps 最佳实践》的主题分享。 本次活动议程&…

2024年第十四届亚太地区大学生数学建模竞赛(中文赛项)B题洪水灾害的数据分析与预测论文和代码分析

经过不懈的努力, 2024年第十四届亚太地区大学生数学建模竞赛(中文赛项)B题洪水灾害的数据分析与预测论文和代码已完成,代码为C题全部问题的代码,论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求…

uniapp+vue3+echarts编写微信小程序

uniappvue3echarts编写微信小程序 记录一下自己uniapp使用echarts开发图表,之前网上找了很多,本以为应该是挺常见的使用方式,没想到引入之路居然这么坎坷,在Dcloud插件市场,使用最多的:echarts-for-wx 但是…

用for语句实现九九乘法表

① #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int main() {for (int i 1; i < 9; i){for (int j 1; j < i; j){printf("%d*%d%d\t", j, i, i * j);}printf("\n");}return 0; } ② #define _CRT_SECURE_NO_WARNINGS #include &…

山西车间应用LP-LP-SCADA系统的好处有哪些

关键字:LP-SCADA系统, 传感器可视化, 设备可视化, 独立SPC系统, 智能仪表系统,SPC可视化,独立SPC系统 LP-SCADA&#xff08;监控控制与数据采集&#xff09;系统是工业控制系统的一种&#xff0c;主要用于实时监控、控制和管理工业生产过程。 在车间应用LP-SCADA系统&#xf…

克隆gitee仓库,在vs2022创建文件夹开发项目操作步骤

git网站 git知识大全 git教程&#xff1a;廖雪峰的官方网站 git菜鸟教程 gitee之创建项目步骤 同步源仓库 2. 克隆命令 3. 右击git Bash Here>粘贴命令行 4. 选中项目文件夹》创建本人文件夹&#xff08;ZYY&#xff09; 5. 打开vs2022》新建项目》选择Framework》下…

LLaMA-Factory安装

安装代码 https://github.com/echonoshy/cgft-llm/blob/master/llama-factory/README.md https://github.com/hiyouga/LLaMA-Factory/tree/mainLLaMA-Factoryhttps://github.com/hiyouga/LLaMA-Factory/tree/main 【大模型微调】- 使用Llama Factory实现中文llama3微调_哔哩…

Java WebService记

Web Services开发 常用的 Web Services 框架有 Apache Axis1 、 Apache Axis2 、 Apache CXF &#xff0c;而 Apache Axis1 已经逐渐被淘汰所以本文不会讨论&#xff0c;重点关注 Apache Axis2 及 Apache CXF 。 Apache Axis2 在IDEA中新建 Axis2Demo 项目后右键选择 添加框架…

欧洲杯:高精度定位技术,重塑体育赛事新体验

随着科技的飞速发展&#xff0c;体育赛事的观赏体验与竞技水平正被不断推向新的高度。在即将到来的2024年欧洲杯赛场上&#xff0c;一项革命性的技术——高精度定位&#xff0c;正悄然改变着比赛的每一个细节&#xff0c;为球迷们带来前所未有的观赛享受&#xff0c;同时也为运…

CSS 背景效果

目录 一、CSS背景属性 二、准备工作 三、background-color 四、background-image 五、background-repeat 六、background-position 七、background-size 八、background-attachment 九、background-clip 十、background-origin 十一、background 一、CSS背景属性 在…

PyFluent入门之旅(3)网格划分

在通过前两期熟悉了PyFluent的基础操作后&#xff0c;本期介绍如何通过PyFluent在Fluent Meshing中使用密闭几何&#xff08;watertight&#xff09;工作流进行网格划分。 开门见山&#xff0c;我先开启PyFluent的gui显示功能展示一下最终效果。 在通过前两期熟悉了PyFluent的…

Appium自动化测试框架1

电脑的浏览器 手机的浏览器 手机上的app 原生的应用 纯java 手机上的app apk 移动网页应用 纯HTML CSS 手机的浏览器上 电脑的浏览器上 混合应用 java html css python代码 Appium python库 Appium 手机 都是代表本机 0.0.0.0 127.0.0.1 localhost 如何启动app 启动参…