2022 07 27 第三小组 陈迪 学习笔记
作者:互联网
类的内部结构:
- 属性、方法、构造器、代码块、内部类
- 代码块:
- 代码块又称为初始化块,属于类的一个成员,它是将一些逻辑语句封装在方法体中。
- 通过一对{}包裹。代码块没有方法名,没有参数,没有返回值,只有方法体。
- 它是不需要通过对象或类进行显式的调用,他会在类加载或者创建对象时主动的隐式调用。
- (1)静态代码块
- 一个类被加载时会被调用一次,做一些初始化的工作。
*(2)实例代码块 - 每次创建实例,都会被调用一次
- 面试:静态块/实例块/构造器
- 父类优于子类/静态块优于其它
- 当没有继承关系时,静态块--实力块--构造器
- 有继承关系时,父类静态块--子类静态块--父类实例块--父类构造器--子类实例块--子类构造器
static静态:
-
属性,方法,代码块
-
用static修饰的结构,不属于任何一个对象
-
static内存解析
-
1、静态的变量或者静态方法存在于方法区的。静态的结构不会被垃圾回收
-
2、不属于某一个实例对象的,只存在于方法区。调用静态结构,直接用类名.的方法
-
实例方法和静态方法的互相调用
-
1、静态方法中不可以直接调用实例方法
-
如果想用,对象.方法名
-
2、实例方法中可以直接调用静态方法
-
静态的结构的加载,随着类的加载而加载
-
非静态的结构,随着对象的创建而加载!!!
-
在java中调用实例方法,必须要有主体,方法不能直接调用
-
静态方法无论在哪里都是类名.方法名调用,同一个类的静态方法之间可以省略
-
静态方法是没有重写这个概念的
-
//接口中的常量默认public static final
-
//开发中,基本上默认常量声明都是public static final
this和super
-
无论是this还是super,都不可以在静态结构中使用。
-
this和super。this.方法。super.方法
-
静态结构是属于类的,静态结构是优先于对象存在的。
-
this和super,必须有对象才能出现,必须得有实例。
外部类:
- 一个public声明的类,类名必须和.java的文件名相同。
- 生成的.class文件是两个独立的.class
- 外部类就是两个类
- 开发中,尽量不要写外部类。
类的组成结构:
-
属性、方法、构造器、代码块、内部类
内部类:
-
在一个类内部进行其他类结构的嵌套操作
-
链表、node类其实主要就是给superlinked。
-
我们可以把node类定义在superlinked中
设计模式:
-
人们为软件开发中抽象出可重复利用的解决方案。
-
软件开发工程师之间沟通的"行话"
-
面向对象的设计原则。
-
1、开闭原则(Open Close Principle)
-
对扩展开放,对修改关闭。(继承,实现接口)
-
我们可以通过“抽象约束,封装变化”来实现开闭原则。
-
通过接口或者抽象类为软件定义一个相对稳定的抽象层。
-
将相同的可变因素封装在相同的具体实现类中,派生一个实体类就可以了
-
2、里氏代换原则
-
子类继承父类时,除了添加新的方法完成新增功能外,尽量不要重写父类
-
3、依赖倒转原则
-
要面向接口编程,不要面向实现编程。
-
a、每个类尽量提供接口或抽象类,或者两者兼备
-
b、变量的类型声明尽量是接口或者抽象类
-
c、任何类都不应该从具体类派生
-
d、使用继承时,要遵循里氏代换原则。
-
4、接口隔离原则
-
使用多个隔离的接口。
-
5、迪米特原则
-
6、合成复用原则
-
7、单一原则:一个类只做一件事
单例模式:
-
一个类只有一个实例。
-
思路:
-
1、别人不能new,构造器私有化,不能在类的外部通过new去实例化。
-
2、在该类内部产生一个唯一的实例对象,把它封装成static类型
-
3.定义一个静态方法返回这个唯一的对象。
-
饿汉式单例模式
-
不管以后会不会使用到该实例化俺对象,先创建了再说。
-
实现的办法就是直接new实例化
-
public class Ch03 { private static final Ch03 ch03=new Ch03(); private Ch03(){} public static Ch03 getInstance(){ return ch03; } }
-
懒汉式(延迟加载)
-
什么时候调用getInstance方法,什么时候new
-
这种懒汉式在多线程环境中完全错误的,根本不能保证单例的状态。
-
内部类实现单例
-
也是懒汉式的一种,这种懒汉式没有线程的问题
-
结合了懒汉式和饿汉式的优点
-
只要不调用getInstance方法,
-
内部类一旦被使用一次只会被初始化一次,以后一直用的是instance
-
public class Ch05 { //私有化构造器 private static Ch05 getInstance(){ return SingletonHolder.instance; } public static class SingletonHolder{ private static final Ch05 instance=new Ch05(); } }
箭头函数:JDK8的新特性
- 函数式接口:如果一个接口只有一个抽象方法,这个接口就称为函数式接口。
- 可以用注解@FunctionalInterface
- 1.有参数有返回值
- (i,j)——>{return i+j;}
- 2.有参数无返回值
- (i,j)——>{方法体}
这个结构可以分为三部分: - 1.小括号包裹形参,类型不要
- 2.——>
- 3.——>方法体
- ()——>system.out.println("重写的show方法...")
- 重写的方法体只有一句话时,可以这么写
- test(()——>"你好");
心得体会:
今天学习了外部类,内部类,还有三种设计模式,老师讲的很好,但是我自己理解能力较差,因此不是很明白,做题正确率也不高,还需要多练习,多请教同学。
标签:27,静态方法,07,静态,调用,陈迪,实例,static,方法 来源: https://www.cnblogs.com/cd01106118/p/16526753.html