Java面向对象第5天

精华笔记:

  1. package:声明包

    • 作用:避免类的命名冲突

    • 同包中的类不能同名,但不同包中的类可以同名

    • 类的全称:包名.类名,常常有层次结构

    • 建议:包名所有字母都小写

    import:导入类、引入类

    • 同包中的类可以直接访问,但不同包中的类不参直接访问,若想访问:

      • 先import导入类再访问类-------建议

      • 类的全称-----------------------------太繁琐,不建议

    注意:

    1. 顺序问题:package----import----class

    2. import 包名.*; 表示导入了包中的所有类,但不建议,建议用哪个类导哪个类

      ------因为.*会影响性能

  2. 访问控制修饰符:-----------------------------保护数据的安全

    • public:公开的,任何类

    • private:私有的,本类

    • protected:受保护的,本类、派生类、同包类

    • 默认的:什么也不写,本类、同包类

      注意:

      1. java不建议默认权限

      2. 类的访问权限只能是public或默认的

        类中成员的访问权限如上4种都可以

      3. 访问权限由大到小依次为:public--protected--默认的--private

  3. final:最终的、不可改变的--------------------单独应用几率低

    • 修饰变量:变量不能被改变

    • 修饰方法:方法不能被重写

    • 修饰类:类不能被继承

  4. static:静态的

    • 静态变量:

      • 由static修饰

      • 属于类,存储在方法区中,只有一份

      • 常常通过类名点来访问

      • 何时用:所有对象所共享的数据(图片、音频、视频等)

    • 静态方法:

      • 由static修饰

      • 属于类,存储在方法区中,只有一份

      • 常常通过类名点来访问

      • 静态方法中没有隐式this传递,所以不能直接访问实例成员

      • 何时用:方法的操作与对象无关

    • 静态块:

      • 由static修饰

      • 属于类,在类被加载期间自动执行,因为一个类只被加载一次,所以静态块也只执行一次

      • 何时用:加载/初始化静态资源(图片、音频、视频等)

笔记:

  1. package:声明包

    • 作用:避免类的命名冲突

    • 同包中的类不能同名,但不同包中的类可以同名

    • 类的全称:包名.类名,常常有层次结构

    • 建议:包名所有字母都小写

    import:导入类、引入类

    • 同包中的类可以直接访问,但不同包中的类不参直接访问,若想访问:

      • 先import导入类再访问类-------建议

      • 类的全称-----------------------------太繁琐,不建议

    注意:

    1. 顺序问题:package----import----class

    2. import 包名.*; 表示导入了包中的所有类,但不建议,建议用哪个类导哪个类

      ------因为.*会影响性能

  2. 访问控制修饰符:-----------------------------保护数据的安全

    • public:公开的,任何类

    • private:私有的,本类

    • protected:受保护的,本类、派生类、同包类

    • 默认的:什么也不写,本类、同包类

      注意:

      1. java不建议默认权限

      2. 类的访问权限只能是public或默认的

        类中成员的访问权限如上4种都可以

      3. 访问权限由大到小依次为:public--protected--默认的--private

      class Card{ //银行卡private String cardId;  //卡号private String cardPwd; //密码private double balance; //余额public boolean payMoney(double money){ //支付金额if(balance>=money){balance-=money;return true;}else{return false;}}public boolean checkPwd(String pwd){ //检测密码--营业员可以调用if(pwd和cardPwd相同){return true;}else{return false;}}
      }
      package ooday05;
      //访问控制修饰符的演示
      public class Aoo {public int a;    //任何类protected int b; //本类、派生类、同包类int c;           //本类、同包类private int d;   //本类
      ​void show(){a = 1;b = 2;c = 3;d = 4;}
      }
      ​
      class Boo{ //----------------演示privatevoid show(){Aoo o = new Aoo();o.a = 1;o.b = 2;o.c = 3;//o.d = 4; //编译错误}
      }
      ​
      package ooday05_vis;
      import ooday05.Aoo;
      public class Coo { //----------------演示同包的void show(){Aoo o = new Aoo();o.a = 1;//o.b = 2; //编译错误//o.c = 3; //编译错误//o.d = 4; //编译错误}
      }
      ​
      class Doo extends Aoo{ //跨包继承---------演示protectedvoid show(){a = 1;b = 2;//c = 3; //编译错误//d = 4; //编译错误}
      }

  3. final:最终的、不可改变的--------------------单独应用几率低

    • 修饰变量:变量不能被改变

      //演示final修饰变量
      class Eoo{final int a = 5;void show(){//a = 55; //编译错误,final的变量不能被改变}
      }

    • 修饰方法:方法不能被重写

      //演示final修饰方法
      class Foo{final void show(){}void test(){}
      }
      class Goo extends Foo{//void show(){} //编译错误,final的方法不能被重写void test(){}
      }

    • 修饰类:类不能被继承

      //演示final修饰类
      final class Hoo{}
      //class Ioo extends Hoo{} //编译错误,final的类不能被继承
      class Joo{}
      final class Koo extends Joo{} //正确,不能当老爸,但是能当儿子

  4. static:静态的

    • 静态变量:

      • 由static修饰

      • 属于类,存储在方法区中,只有一份

      • 常常通过类名点来访问

      • 何时用:所有对象所共享的数据(图片、音频、视频等)

        class Loo{int a;static int b;Loo(){a++;b++;}void show(){System.out.println("a="+a+",b="+b);}
        }
        public class StaticDemo {public static void main(String[] args) {Loo o1 = new Loo();o1.show();Loo o2 = new Loo();o2.show();Loo o3 = new Loo();o3.show();System.out.println(Loo.b); //常常通过类名点来访问}
        }

    • 静态方法:

      • 由static修饰

      • 属于类,存储在方法区中,只有一份

      • 常常通过类名点来访问

      • 静态方法中没有隐式this传递,所以不能直接访问实例成员

      • 何时用:方法的操作与对象无关

        //演示静态方法
        class Moo{int a; //实例变量(对象来访问)static int b; //静态变量(类名点来访问)void show(){ //有thisSystem.out.println(this.a);System.out.println(Moo.b);}static void test(){ //没有this//静态方法中没有隐式this传递,//没有this就意味着没有对象,//而实例变量a是必须通过对象点来访问的//所以如下语句发生编译错误//System.out.println(a); //编译错误System.out.println(Moo.b);}
        }
        ​
        //演示静态方法何时用
        class Noo{int a; //实例变量----是属于对象的,描述对象的属性//在show()中需要访问对象的属性a,说明此方法与对象有关,不能设计为静态方法void show(){System.out.println(a);}//在plus()中并没有访问对象的属性或行为,说明此方法与对象无关,可以设计为静态方法static int plus(int num1,int num2){int num = num1+num2;return num;}
        }
        ​
        public class StaticDemo {public static void main(String[] args) {Moo.test(); //常常通过类名点来访问}
        }

    • 静态块:

      • 由static修饰

      • 属于类,在类被加载期间自动执行,因为一个类只被加载一次,所以静态块也只执行一次

      • 何时用:加载/初始化静态资源(图片、音频、视频等)

        //演示静态块
        class Poo{static{System.out.println("静态块");}Poo(){System.out.println("构造方法");}
        }
        public class StaticDemo {public static void main(String[] args) {Poo o4 = new Poo();Poo o5 = new Poo();Poo o6 = new Poo();}
        }

补充:

  1. 数据(成员变量)私有化(private),行为(方法)大部分公开化(public)

  2. 成员变量分两种:实例变量和静态变量

    • 实例变量:没有static修饰,属于对象的,存储在堆中,有几个对象就有几份

      通过引用打点来访问

    • 静态变量:由static修饰,属于类的,存储在方法区中,只有一份

      通过类名点来访问

  3. 内存管理:由JVM管理的

    • 堆:new出来的对象(包括实例变量、数组的元素)

    • 栈:局部变量(包括方法的参数)

    • 方法区:.class字节码文件(包括静态变量、所有方法)

  4. 一般情况下:凡是静态的成员,都是公开的

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

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

相关文章

Vue3挂载完毕后,隐藏dom再重新加载组件的方法

组件原本是在PC端使用的,现在需要把组件再封装一次,供app调用,但是在app上会显示tag栏,有占位影响空间,所以需求去掉头部tag,只显示下方组件。 实现方法,以前是直接引用的组件,现在改…

简介vue

目录 一、介绍 渐进式框架​ 单文件组件​ 选项式 API (Options API)​ 组合式 API (Composition API)​ 该选哪一个?​ 创建一个 Vue 应用 应用实例​ 根组件​ DOM 中的根组件模板 应用配置​ 多个应用实例​ 一、介绍 Vue (发音为 /vjuː/&#xff…

.NET生成微信小程序推广二维码

前言 对于小程序大家可能都非常熟悉了,随着小程序的不断普及越来越多的公司都开始推广使用起来了。今天接到一个需求就是生成小程序码,并且与运营给的推广图片合并在一起做成一张漂亮美观的推广二维码,扫码这种二维码就可以进入小程序。为了…

【开源】基于Vue.js的大学计算机课程管理平台的设计和实现

项目编号: S 028 ,文末获取源码。 \color{red}{项目编号:S028,文末获取源码。} 项目编号:S028,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 实验课程档案模块2.2 实验资源模块2…

vue项目实现生成一个简单二维码

vue项目中实现的 一个简单的二维码生成例子 首先安装一下插件 npm install qrcodejs2 --save然后尝试走通下面的业务 <template><div class"qrcode"><h1>生成二维码</h1><label for"text">请输入要转换为二维码的内容&…

前端环境变量释义process.env与import.meta.env

视频教程 彻底搞懂前端环境变量使用和原理&#xff0c;超清楚_哔哩哔哩_bilibili 添加命令行参数 --modexxxxx 新建.env.xxxx文件,其中.env文件会在所有环境下生效 以VITE_开头&#xff0c;字符串无需加双引号 使用import.meta.env.VITE_xxxxx进行调用

C++Primer(中文版)(第五版)【读书笔记 + 思考总结】

CPrimer&#xff08;中文版&#xff09;&#xff08;第五版&#xff09;【读书笔记 思考总结】 第7章 类什么是数据抽象&#xff1f;什么是封装&#xff1f;什么是抽象数据类型&#xff1f;一个设计良好的类应该提供什么&#xff1f;什么是inline函数&#xff1f;inline函数有…

【数据结构】树与二叉树(廿四):树搜索指定数据域的结点(算法FindTarget)

文章目录 5.3.1 树的存储结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法1. 获取大儿子、大兄弟结点2. 搜索给定结点的父亲3. 搜索指定数据域的结点a. 算法FindTargetb. 算法解析c. 代码实现a. 使用指向指针的指针b. 直接返回找到的节点 4. 代码整合 5.3.1 树的存储结构 5.…

C++之模版初阶(简单使用模版)

前言 在学习C的模版之前&#xff0c;咱们先来说一说模版的概念&#xff0c;模版在我们的日常生活中非常常见&#xff0c;比如我们要做一个ppt&#xff0c;我们会去在WPS找个ppt的模版&#xff0c;我们只需要写入内容即可&#xff1b;比如我们的数学公式&#xff0c;给公式套值&…

计算机人机界面

人机界面是指入与机器之间相互交流和影响的区域。人机界面包括对数据和信息的输入和输出方法&#xff0c;以及人们对机器的操作和控制。早期&#xff0c;人机交互界面是控制合&#xff0c;随后通过键盘进行操作&#xff0c;目前为鼠标和键盘操作&#xff0c;而智能手机采用触摸…

【Linux】基本指令(二)

本文续接上文基本指令&#xff08;一&#xff09; 目录 cpmvcatmore && less cp 语法&#xff1a;cp [选项] 源文件或目录 目标文件或目录 功能: 复制文件或目录 说明: cp指令用于复制文件或目录&#xff0c;如同时指定两个以上的文件或目录&#xff0c;且最后的目的地…

第一节HarmonyOS DevEcoStudio工具下载以及环境搭建

一、下载与安装DevEco Studio 在HarmonyOS应用开发学习之前&#xff0c;需要进行一些准备工作&#xff0c;首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 进入DevEco Studio 工具下载官网&#xff1a;https://developer.harmonyos.com/cn/develop/deveco-stu…

经典滑动窗口试题(二)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、水果成篮1、题目讲解2、讲解算法思路3、代码实现 二、找到字符串中所有字母异位词1、题目…

距离向量路由协议——IGRP和EIGRP

IGRP-内部网关路由协议 IGRP&#xff08;Interior Gateway Routing Protocol&#xff0c;内部网关路由协议&#xff09;是一种动态距离向量路由协议&#xff0c;它是Cisco公司在20世纪80年代中期设计的&#xff0c;是Cisco专用路由协议。目前在Cisco高版本的IOS已经对IGRP不提…

免费查找文献期刊数据论文网站

文章目录&#xff1a; 一&#xff1a;文献期刊 1.网站 2.镜像 3.搜索 4.检索 5.图书馆 6.学校 7.论文 8.导航 9.模板格式 10.翻译 二&#xff1a;数据 一&#xff1a;文献期刊 1.网站 中国知网 维普 IData sci-hub&#xff1a;Sci-Hub: 将知识带给每个人、S…

交叉编译

1. 交叉开发 交叉编译&#xff1a; 在电脑把程序编写 编译 调试好 再下载到嵌入式产品中运行 编译&#xff1a; gcc 之前编译环境和运行环境是一样的 交叉编译&#xff1a; 编译 把编译代码和运行分开 编译代码在虚拟机中 运行…

BGP基础配置

EBGP是AS之间 IBGP是AS内 R1-R2是EBGP,R4-R5是EBGP R2-R3-R4是IBGP 第一步基础配置&#xff1a;IP地址 [r1-GigabitEthernet0/0/0]ip ad 12.0.0.1 24 [r1-LoopBack0]ip ad 1.1.1.1 32 [r2-GigabitEthernet0/0/0]ip ad 12.0.0.2 24 [r2-LoopBack0]ip ad 2.2.2.2 32 [r2-Loop…

Java中的mysql——面试题+答案(数据库连接池,批处理操作)——第22期

当涉及Java中的MySQL时&#xff0c;面试题的范围可以涵盖更多方面&#xff0c;包括高级主题和实践经验。 什么是Hibernate&#xff1f;它与JDBC有什么区别&#xff1f; 答案&#xff1a; Hibernate是一个开源的对象关系映射&#xff08;ORM&#xff09;框架&#xff0c;它允许J…

【论文解读】在上下文中学习创建任务向量

一、简要介绍 大型语言模型&#xff08;LLMs&#xff09;中的上下文学习&#xff08;ICL&#xff09;已经成为一种强大的新的学习范式。然而&#xff0c;其潜在的机制仍未被很好地了解。特别是&#xff0c;将其映射到“标准”机器学习框架是具有挑战性的&#xff0c;在该框架中…

成功解决:AssertionError: Torch not compiled with CUDA enabled

在运行pycharm项目的时候&#xff0c;出现了以上的报错&#xff0c;主要可以归结于以下两个个方面&#xff1a; 1、没有安装GPU版本的pytorch&#xff0c;只是使用清华的镜像地址下载了CPU版本的pytorch 2、安装的CUDA和安装的pytorch的版本不相互对应 我使用 pip list 来…