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 ...
随机推荐
- React中编写操作树形数据的自定义Hook
什么是 Hook hook 即为钩子,是一种特殊的函数,它可以让你在函数式组件中使用一些 react 特性,目前在 react 中常用的 hook 有以下几类 useState: 用于在函数组件中定义 ...
- python(django启动报错,之编码问题)UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte
- 【持续更新】C++ 并不完全是 C 的超集!
一些容易被忽略的 C 与 C++ 的不兼容特性 头文件和命名空间 C 标准库头文件名在 C++ 中通常去除扩展名,并加上 c 前缀,如: stdio.h -> cstdio stdlib.h - ...
- rsync 命令
linux上的rsync命令详解 15个rsync命令实施 -z: --compress 使用压缩机制 -v: --verbose 打印详细信息 -r: --recursive 以递归模式同步子目录 ...
- 获取Rtx用户状态方法
背景:企业OA系统需要与Rtx集成,且高权限身份用户需要获取符合某一条下的所有员工rtx状态... 方案:以此背景,基于rtx sdk做二次开发, 1.后台调用RootObj.QueryUserSta ...
- 解决AccessDatabaseEngine.exe 32位64位安装失败问题
cmd下执行 你的路径\AccessDatabaseEngine.exe /quiet 转载于:https://www.cnblogs.com/64mb/p/10844676.html
- Cilium系列-15-7层网络CiliumNetworkPolicy简介
系列文章 Cilium 系列文章 前言 今天我们进入 Cilium 安全相关主题, 介绍 CiliumNetworkPolicies 相比于 Kubernetes 网络策略最大的不同: 7 层网络策略 ...
- 【go笔记】从安装到helloworld
前言 Go语言也称Golang,google出品,特点在于编程简便的同时并发性能不俗. 环境准备: Go语言版本:1.17.2.安装包下载链接:https://studygolang.com/dl l ...
- servlet系列:简介和基本使用以及工作流程
目录 一.简介 二.Servlet实现 三.基本使用 1.引入pom依赖 2.实现Servlet规范,重写service方法 3.配置web.xml 4.配置Tomcat 6.运行 四.Servlet ...
- [MAUI]在.NET MAUI中实现可拖拽排序列表
.NET MAUI 中提供了拖放(drag-drop)手势识别器,允许用户通过拖动手势来移动控件.在这篇文章中,我们将学习如何使用拖放手势识别器来实现可拖拽排序列表.在本例中,列表中显示不同大小的磁贴 ...