ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022-7-27 第六组 刘明延 学习笔记

2022-07-27 22:34:50  阅读:131  来源: 互联网

标签:27 静态方法 刘明延 静态 调用 实例 static 2022 方法


    /** 定义静态变量
* 访问修饰符 static 数据类型 变量名 或者 static 访问修饰符 数据类型 变量名
* 类名.属性 对象名.属性
* 定义静态方法
* 访问修饰符 static 返回值类型 方法名 或者 static 访问修饰符 返回值类型 方法名
* 静态方法中只能访问静态变量/静态属性
* 类名.方法名 对象名.方法名
* 静态方法不能使用this和super
* 普通方法既可以访问普通属性和方法,也可以访问静态属性和方法
* 类什么时候被加载:
* 1.创建对象实例时
* 2.创建子类对象实例时,父类也会被加载
* 3.使用类的静态成员时
*
* 普通代码块:
* 1.创建对象就会被调用
* 2.使用类的静态成员不会调用
*
* 父类静态块>子类静态块>父类实例块>父类构造器>子类实例块>子类构造器
* 静态代码块和静态属性初始化调用优先级相同,运行时按定义顺序分先后,普通代码块顺序同静态代码块顺序
**一个public声明的类,类名必须和.java文件的文件名相同
* JVM只认识Java.class
* 一个类的内部又完整的嵌套了另一个类结构,被嵌套的类称为内部类(inner class)
* 在一个类里声明另一个类
* 内部类是残缺不全的
* !!!实例内部类不能写所有静态的东西,包括主方法
* 嵌套其他类的类称为外部类(outer class)
* 内部类最大的特点是可以直接访问私有属性,体现类与类的包含关系
* 类的5大成员:(内部结构)
* 属性,方法,构造器,代码块,内部类
* 基本语法:
* class Outer{ //外部类
* class Inner{ //内部类
* }
* }
* class Other{ //外部其他类
* }
* 内部类的分类:
* 定义在外部类局部位置上 比如方法内
* 1.局部内部类(有类名)
* 2.匿名内部类(没有类名,重点!!!!)
* 定义在外部类的成员位置上
* 3.实例内部类(没用static修饰)
* 4.静态内部类(使用static修饰)
*
* 代码块,又称为初始化块,实例块
* 通过{}包裹,代码块没有方法名,没有参数,没有返回值,没有访问权限,只有{}
* 它是不需要通过对象或类进行显示的调用,他会在类加载或者创建对象时主动的隐式调用
* 静态代码块(static)
* 一个类被加载时会被调用一次,做一些初始化的工作,可以有N多个,一般就写一个
* 实例代码块()
* 每次创建实例都会被调用一次,用得不多,可以有N多个,一般就写一个
* 静态块>实例块>构造器,在运行时的打印顺序
* 父类优于子类,静态块优于其他
* 父类静态块>子类静态块>父类实例块>父类构造器>子类实例块>子类构造器
* static静态
* 静态变量被类中对象共享
* 可修饰:属性,方法,代码块
* 语法:
* 类名.属性名/方法/代码块
* 用static修饰的结构,不属于任何一个对象,属于类,不用对象也能调用,用对象也能调,对象也属于类(严格来说不应该用对象调)
* public static void show(){} 静态方法,也叫类方法
* 内存解析:
* static修饰的东西不会被垃圾回收,忽略static修饰的东西,只存在于方法区(开发中尽量避免使用静态。会占用内存。内存是有限的)
*
* 实例方法和静态方法的互相调用
* 静态方法可以直接调用实例方法吗
* 不可以
* 没有对象就调用不了实例方法,没对象就不出来
* 如果想用,必须:对象.方法名,需要创建对象
* 实例方法可以直接调用静态方法吗
* 可以
* 静态方法随着类加载出现,有类就有静态方法
*
* 在Java中调用实例方法必须有主体(有对象去调用,没写不代表没有,有的是省略了,如this),不能直接调用
* 静态方法无论在哪里都是类名.方法调用
* 同一个静态调静态可以省略类名
* 接口中的常量前默认有public,final,static
* 开发中常量的声明不管在哪个类都有public final static(要写,接口中可以省略)
* !!!!!!静态方法没有重写这个概念
* 工具类一般写静态方法
* 无论是this还是super,都不可以在静态结构中使用
* 静态结构是属于类的,静态结构是优先于对象存在的
* this和super必须有对象才能出现,静态方法没有重写,继承对静态方法是没有意义的
*
* 扩展一般就是继承
* 设计模式是人们为软件开发中抽象出可重复利用的解决方案
* 软件开发工程师之间沟通的"行话"
*
* 面向对象的一般设计原则:
* 1.开闭原则(Open Close Principle)
* 对扩展开放,对修改关闭,(继承,实现接口)
* 我们可以通过"抽象约束,封装变化"来实现开闭原则
* 通过接口或者抽象类为软件定义一个相对稳定的抽象层
* 将相同的可变因素封装在相同的具体实现类中,派生一个实体类就可以了
* 2.里氏代换原则
* 子类继承父类时,除了添加新的方法完成新增的功能外,尽量不要重写父类
* 3.依赖倒转原则
* 面向接口编程,不要面向实现编程
* a.每个类尽量提供接口或抽象类,或者两者兼备
* b.变量的声明尽量是接口或者抽象类,利用多态向上转型
* c.任何类都不应该从具体的类派生(接口或抽象类),尽量用多态创建对象
* d.使用继承时,要遵循里氏代换原则
* 4.接口隔离原则
* 使用多个隔离的接口
* 5.迪米特法则
* 6.合成复用原则
* 7.单一原则
* 一个类只做一件事
* ......
*
* 箭头函数:JDK8的新特性 就是给接口用的
*
* 函数式接口:只有一个抽象方法,其他方法不考虑
* 注释@:FunctionalInterface
* 写法:
* 有参数,有返回值
* (i,j)->(return i+j;) 如果方法体只有一句话(i,j)
* 有参数,无返回值
* (i,j)->{ //方法体}
 学习心得:学业顺利,今天很轻松,比以前更容易理解学习内容

标签:27,静态方法,刘明延,静态,调用,实例,static,2022,方法
来源: https://www.cnblogs.com/dsofjsdo/p/16526757.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有