Java面向对象(高级)
1、类变量
类变量是被类的所有实例共享的。
类变量具体放的位置在哪?在内存中的那个区域,这和jdk的版本是有关的
静态变量在类加载的时候就生成了,即使没有创建类实例也能访问,当然通过实例来实现
类变量定义
访问修饰符 static 类型 变量名
2、类方法
1、只需要在普通方法前面加上一个static就可以把该方法变成类方法
2、当方法中不涉及任何和对象相关的成员的时候把方法设置成静态方法可以提高效率
3、类方法中不允许使用和对象相关的关键字如this、super
类变量定义
访问修饰符 static 返回值类型 方法名(){}
我们需要记住静态方法只能访问静态成员,非静态可以访问静态和非静态
3、main方法
1、main方法是JVM在调用,访问权限必须是public
2、java虚拟机在调用main方法时不必实例化对象
使用细节
main方法可以直接使用静态成员,但不能直接使用非静态成员,如果要使用非静态成员需要实例化出来一个对象
代码块
代码块相当于构造器(或则说是对构造器的补充),可以做初始化操作
使用方法:当构造器中有多个重复语句时,使用比较方便
//修饰符可以写也可以不写,写的话就只能写static,后面的;可以写也可以不写
[修饰符]
{
};
使用细节:
1、如果修饰符是static,那么代码块在类加载时被执行,且只会被执行一次
2、类加载的时间:创建类的实例、创建子类的实例父类也会被加载、使用类的静
3、对象实例化时,类内部的执行顺序:1、静态代码块、静态属性初始化 2、普通代码块、普通属性初始化 3、构造器
4、先加载父类,再加载父类,再初始化父类再初始化子类
单例设计模式
保证一个类只有一个实例
单例模式分为两种一种是饿汉式、一种是懒汉式
1、将构造器私有化 2、在类的内部直接创建 3、提供一个static方法直接返回创建的对象
懒汉式和饿汉式的区别在于实例化的时间,饿汉式是在类加载的时候就创建了实例,懒汉式是在调用getInstance时才会创建实例
懒汉式不会造成资源的浪费
final
1、当一个类不希望被其他类继承时,可以在这个类前面加上final
2、当父类的一样方法不希望被重写时,可以用final修饰
3、当类的某个属性不希望被修改时,可以用final修饰,
其实可以这样理解当一个东西不希望被修改时,我们可以final修饰
使用细节
1、final修饰的属性被称为常量一般用大写字母+_组成,而且必须进行初始化
2、如果final修饰的是静态的,那么初始化时只能在定义时或则静态代码段
3、如果类不是final类,但是含有final方法,则该方法虽然不能重写,但却可以继承,子类使用。
4、如果类已经用final修饰了,就没有必要再用final修饰方法了。
5、包装类(Integer,Double,Float,Boolean等都是final),String也是final类。
Java面向对象(高级)的更多相关文章
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:继承的应用
class Array{ // 表示数组 private int temp[] ; // 整型数组 private int foot ; // 定义添加位置 public Array(int len) ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:匿名内部类
interface A{ public void printInfo() ; // } class B implements A{ // 实现接口 public void printInfo(){ S ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:包装类
public class WrapperDemo01{ public static void main(String args[]){ int x = 30 ; // 基本数据类型 Integer i ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:Object类
class Demo{ // 定义Demo类,实际上就是继承了Object类 }; public class ObjectDemo01{ public static void main(String ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:宠物商店实例分析
interface Pet{ // 定义宠物接口 public String getName() ; public String getColor() ; public int getAge() ; ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:抽象类与接口的应用
abstract class A{ // 定义抽象类A public abstract void print() ; // 定义抽象方法print() }; class B extends A { / ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:instanceof关键字
class A{ // 定义类A public void fun1(){ // 定义fun1()方法 System.out.println("A --> public void fun ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:对象的多态性
class A{ // 定义类A public void fun1(){ // 定义fun1()方法 System.out.println("A --> public void fun ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:接口的基本实现
interface A{ // 定义接口A public static final String AUTHOR = "李兴华" ; // 全局常量 public abstract ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:final关键字
final class A{ // 使用final定义类,不能有子类 }; class B extends A{ // 错误,不能被继承 }; class A{ public final void p ...
随机推荐
- Dubbo的高级特性:服务治理篇
王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 上一篇中,我们已经在Spring Boot应用中集成了Dubbo,并注册了一个服务提供方和一个服务使用方 ...
- RTC+AI|“即智”数智人创新内容生产体验,为企业降本增效再提速
号称"史上最卷"的618年中大促落下帷幕,几大电商巨头在直播投入和短视频内容建设上持续加码,短视频+直播电商的营销模式成为618期间的主要输出. 以某美妆专场直播间为例,主播现场手 ...
- Typora markdown 满屏显示,去除两边的留白
Typora 宽度在CSS样式文件中有个 max-width 值,现在的显示器分辨率比较高,会导致编辑器两边留白比较多 导致文档编辑时,高分辨率的显示器,得不到充分利用 解决方案 修改源码编辑器样式 ...
- DevOps | 产研协同效能提升之评审、审批流、质量卡点
研发过程中有各种需求的评审.审批流和质量卡点,有的是为了质量把关,有的是为了彰显权力,还有一些是为了信息告知.本文主要讨论在软件开发过程中涉及的评审.审批和质量卡点三种情况,同时探讨对研发流程的影响, ...
- HBase架构和技术原理介绍
一.HBase数据模型(☆) 1.NameSpace 命名空间,类似于关系型数据库的 DataBase 概念,每个命名空间下有多个表.HBase有两个自带的命名空间,分别是 hbase 和 defau ...
- 暑假刷题记 B
动态规划 字符串 杂题 A:Animals and Puzzle B:Vanya and Treasure 根号分治. 实际上是从 \((1, 1)\) 先找一个 \(1\),再找一个 \(2\dot ...
- docker 安装 Influxdb-relay 使用
转载请注明出处: 1.influxdb relay的作用和特性 数据转发:InfluxDB Relay 可以从一个或多个源(input)接收数据,并将其转发到一个或多个目标(output)的 Infl ...
- JavaScript 基础(1) - 笔记
1 JavaScript基础 1.1 JavaScript 是什么 1.JavaScript(是什么?) 是一种运行在客户端(浏览器)的编程语言,实现人机交互效果. 2.作用(做什么?) 网页特效(监 ...
- Go 语言中排序的 3 种方法
原文链接: Go 语言中排序的 3 种方法 在写代码过程中,排序是经常会遇到的需求,本文会介绍三种常用的方法. 废话不多说,下面正文开始. 使用标准库 根据场景直接使用标准库中的方法,比如: sort ...
- 【RocketMQ】消息的存储总结
当Broker收到生产者的消息发送请求时,会对请求进行处理,从请求中解析发送的消息数据,接下来以单个消息的接收为例,看一下消息的接收过程. 数据校验 封装消息 首先Broker会创建一个Message ...