2022-07-27 第八组 韩文清

                                          面向对象的知识点

一.类的内部结构

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

二. 代码块

      又称为有可以称为初始化块,属于类的成员,它是将一些逻辑语句封装在方法体中。
通过一对大括号{ }包裹起来,代码块是没有方法名,没有参数,没有返回值,只有方法体
它是不需要通过对象或者类去进行显示的调用,它会在类加载或者创建对象时主动的隐式调用。

1.静态代码块(static修饰)

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

2.实例代码块

 每次创建实例都会被调用一次,用的很少

3.面试题

  当没有继承关系时,就一个类,静态块-->实例块-->构造器
  当有继承时,父类静态块--子类静态块--父类实例块--父类构造器--子类实例块--子类构造器
  父优于子,静态优于非静态

三. static  (静态,可以修饰的)  或者叫类属性,类方法
   
 修饰属性,方法,代码块
     用static修饰的结构,不属于任何一个对象

1.静态方法:public static void show(){}   可以自己创建方法

2.static的内存解析:
1.静态的变量或者静态的方法存在于方法区的,静态的结构不会被垃圾回收
2.不属于某一个实例对象的,它只存在于方法区,调用静态结构,直接用(类名.方法名)

四.实例方法和静态方法的互相调用

1.静态方法中可以直接调用实例方法么?不可以!
    如果想用,必须对象.方法名
2.实例方法中可以直接调用实例方法么?可以!

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

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

静态方法无论在哪里都是类名.方法名的形式进行调用(对象也可以调用),同一个类的静态调用静态可以省略。

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

5.类名.方法名:

           Arrays.toString();
           Arrays.sort();
          Integer.parseInt();
         String.valueOf();

补充:this和super
          1. 无论是this还是super,都不可以在静态结构中使用

          2.   this.方法 super.方法

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

         4.this和super,必须有对象才能出现。必须得有实例

五.外部类

    1. 一个public声明的类,他的类名必须和.java的文件名必须相同

     2. 生成的.class文件是两个独立的.class

     3. 外部类就是两个类   开发中尽量不要写外部类

六.内部类

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

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

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

    (2).面向对象设计的原则
     1. 开闭原则(Open Close Principle)
         对扩展开放,对修改关闭。(继承和实现接口),我们可以通过“抽象约束,封装变化”来实现开闭原则, 通过接口或抽象类为软件定义一个相对稳定的抽象层,  将相同的可变因素封装在相同的具体实现类中,派生一个实体类就可以了.

      2. 里氏代换原则
  子类继承父类时,除了添加新的方法完成新增的功能外,尽量不要重写父类的功能
3. 依赖倒转原则
   要面向接口编程,不要面向实现编程。
     a.每个类尽量提供接口或抽象类,或者两者兼备
     b.变量的声明尽量是接口或者是抽象类
     c.任何类都不应该从具体类派生
     d.使用继承时要遵循里氏代换原则
4. 接口隔离原则
    使用多个隔离的接口
5. 迪米特法则
6. 合成复用原则
7. 单一原则:一个类只做一件事

八.单例模式

 一个类只有一个实例
   思路:
       1. 别人不能new,构造器私有化,不能在类的外部实例化
       2. 在该类的内部产生唯一的一个实例化对象,我们把它封装成static类型
       3. 定义一个静态方法返回这个唯一的对象。

1.饿汉式单例模式
       不管以后会不会使用到该实例化对象,先创建了在说,很着急的样子
       实现的办法就是直接new实例化。

2.懒汉式(延迟加载
什么时候调用getInstance方法,什么时候new。
这种懒汉式在多线程环境中是完全错误的,根本不能保证是单例的状态。
加锁!

3.内部类实现单例
 也是懒汉式的一种,这种懒汉式没有线程的问题
 结合了饿汉式和懒汉式的优点:
 只要不调用getInstance方法,就不会使用内部类
 内部类一旦被使用一次只会被初始化一次,以后一直用的是INSTANCE静态常量。

学习心得:今天学习的还没有消化,正在努力吸收中!
 

                   


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值