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 ...
随机推荐
- JS中使用Promise.all控制所有的异步请求都完成后,在执行后续逻辑
使用场景为,在js中连续的几个异步耗时操作,后面的耗时操作需要使用第一个操作的返回结果.例如调用ajax异步接口,需要先创建完主表,然后拿到主表id在去循环创建明细表,等全部创建完成后,弹出提示来,或 ...
- SQL Server 数据库字符串分割函数
SQL Server 数据库字符串分割函数,源代码如下: ALTER FUNCTION [dbo].[f_split] ( @SourceStr VARCHAR(MAX), -- 源字符串 @Spli ...
- C补充
C语言之unsigned 与signed 无符号与有符号数据的操作区别在于当最高位,当最高位为0时都一样: 在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) c ...
- tcpdump 常用命令
最后更新时间 2021-10-05. Linux 的命令太多,tcpdump 是一个非常强大的抓包命令. 有时候想看线上发生的一些问题: nginx 有没有客户端连接过来-- 客户端连接过来的时候 P ...
- snmptt解析中文trap消息
项目中使用了中国电信系统集成公司的虚拟化平台,为通过zabbix监控,接收HyperCenter发送的告警,需要将trap消息中的汉语编码转译.网络上snmptt资料不多,官网文档也不甚友好,通过参考 ...
- iptables防火墙调试,想打印个日志就这么难
背景 怎么会讲这个话题,这个说来真的长了.但是,长话短说,也是可以的. 我前面的文章提到,线上的服务用了c3p0数据库连接池,会偶发连接泄露问题,而分析到最后,又怀疑是db侧主动关闭连接,或者是服务所 ...
- Vue Cli起别名
vue cli 3的写法 module.exports = { configureWebpack: { resolve:{ extensions:[], alias:{ 'assets':'@/ass ...
- Ceres简单应用-求解(Powell's Function)鲍威尔函数最小值
Ceres 求解 Powell's function 的最小化 \(\quad\)现在考虑一个稍微复杂一点的例子-鲍威尔函数的最小化. \(\quad{}\) \(x=[x_1,x_2,x_3,x_4 ...
- 创建python虚拟环境并打包python文件
前言 当需要为一个离线环境部署python应用时,离线环境可能缺少各种python环境,有docker的话可以用docker,没有docker可以用pyinstaller打包成二进制文件.pyinst ...
- 基于Pair-wise和CrossEncoder训练单塔模型
本文分享自华为云社区<语义检索系统排序模块:基于ERNIE-Gram的Pair-wise和基于RocketQA的CrossEncoder训练单塔模型>,作者: 汀丶. 文本匹配任务数据每一 ...