2022-07-27 第六组 Myy 学习笔记_面向对象收尾部分

面向对象收尾部分

类的内部结构:

属性、方法、构造器、代码块、内部类

代码块:

代码块又称为初始化块,属于类的一个成员,它是将一些逻辑语句封装在“方法体”中。

通过{}包裹。代码块没有方法名,没有参数,没有返回值,只有方法体。

它是不需要通过对象或类进行显式的调用,它会在类加载或者创建对象时,主动的隐式调用

(1)静态代码块

一个类被加载时会被调用一次,做一些初始化的工作。

 

(2)实例代码块

实例就是对象,要让实例代码块能够正常运行,记得创建对象(创建对象的过程中初始化好了)。每次创建对象都会被调用一次,用的很少。

 

 

 

面试题:

先走各种块,再走构造器。

  • 当没有继承关系时,就一个类,先后顺序:静态块---实例块---构造器。

父类优于子类、静态块优于非静态

  • 当有继承关系时👇

 

 

静态static 类属性、类方法

可以修饰属性、方法、代码块

用static修饰的结构,不属于任何一个对象。类名.属性名进行调用,也不依赖于任何一个对象。

static内存解析

1、静态的变量或者静态方法,存在于方法区的。静态的结构不会被垃圾回收。

2、不属于某一个实例对象,只存在于方法区。调用静态结构,直接用类名.属性名/方法名的方式即可。

实例方法和静态方法互相调用

1、在静态方法中可以直接调用实例方法吗?№!

如果想用必须对象.方法名

2、实例方法中可以直接调用静态方法吗?Yes!

静态结构的加载,随着的加载而加载!!

非静态的结构,随着对象的创建而加载!!

在Java中调用实例方法,必须要有主体。方法不是一等公民,不能直接调用。

 

静态方法无论在哪里,都是类名.方法名的方式来进行调用,同一个类的静态方法之间可以省略类名。

静态方法是没有重写这个概念的!

 

》车间/车练习题:

 

 

 

 

 

this和super

无论是this还是super,都不可以在静态结构中使用。

this和super,this.方法 super.方法

静态结构是属于类的,静态结构是优先于对象就存在的。

this和super,必须有对象才能用,依赖于某一个对象才能出现,必须有实例才能用this和super。

外部类

开发中基本不用,写在同一个Java文件中,但它是另一个类。外部类就是两个类,生成的.class文件是两个独立的.class。

不能用public --> 一个public声明的类,类名必须和.Java的文件名相同,否则就报错

内部类

在一个类内部进行其他类结构嵌套操作

我们之前写过的链表,Node类其实主要就是给SuperLinked。我们可以把Node类定义在SuperLinked中。

实例内部类

静态内部类

设计模式

设计模式是人们为软件开发中抽象出可重复利用的解决方案。软件开发工程师之间沟通的“行话”。

面向对象的设计原则:

1.开闭原则(Open Close Principle)

对扩展开发,对修改关闭(继承、实现接口)

只读

  • 我们可以通过“抽象约束、封装变化”来实现开闭原则。--> 通过接口或者抽象类为软件定义一个相对稳定的抽象层。

  • 将相同的可变因素封装在相同的具体实现类中,只需要派生一个实体类(派生:继承/实现)。

2.里氏代换原则

子类继承父类时,除了添加新的方法完成新增的功能外,尽量不要重写父类的方法

3.依赖倒转原则

面向接口编程,不要面向实现编程。

a、每个类尽量提供接口或抽象类,或者两者兼备

b、变量的类型声明尽量是接口或者是抽象类

c、任何类都不应该从具体类派生(从接口或抽象类派生,尽量用接口派生对象)

d、使用继承时,要遵循里氏代换原则

4.接口隔离原则

使用多个隔离的接口。按照实际功能去划分接口。

5.迪米特法则

6.合成复用原则

7.单一原则

一个类只做一件事

单例模式

单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。

单例模式-饿汉式手写代码

单例模式-懒汉式手写代码

不一定单例,没有饿汉那么安全,有可能出现多例

 

 

内部类实现单例-懒汉式原理手写代码

也是懒汉式的一种,这种懒汉式没有线程的问题。

 

 

箭头函数:JDK8的新特性

函数式接口:如果一个接口只有一个抽象方法,这个接口就称为函数式接口。可以用一个注解:@FunctionalInterface来标识

 

 

箭头函数的几种写法

1.有参有返回值

(i,j)-> {return i + j;}

如果方法体只是一句返回值(i,j)->i+j

2.有参无返回值

(i,j)->{//方法体}

如果方法体只有一句话(i,j)-> 方法体的一句话

3.无参无返回值

()->{方法体}

 

 

可以简写为👇,返回值那块是show方法,因为函数式接口中,一个接口只有一个抽象方法。

 

 

 

双向链表(见20220727代码部分)

单链表--栈和队列--双链表

posted @   Myy蒋  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示