ICode9

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

2022-07-27 第二组 刘禹彤 学习笔记

2022-07-27 20:00:06  阅读:131  来源: 互联网

标签:27 静态方法 07 静态 实例 static new 刘禹彤 方法


打卡17天

今天学习面向对象的最后一部分

 

 

###学习笔记

2.static静态

属性,方法,代码块

  • 用static修饰的结构,不属于任何一个对象
  • static内存解析:1.静态的变量或者静态方法存在于方法区的,静态的结构不会被垃圾回收

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

  • 实例方法和静态方法的互相调用:

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

2.实例方法中可以直接调用静态方法

  • 静态的结构的加载,随着类的加载而加载

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

在java中调用实例方法,必须要有主体,方法不能直接调用

静态方法无论在哪里都是类名.方法名调用,同一个类的静态方法之间类之间省略类名

接口里的常量默认public static final

开发中基本上常量的声明都是public static final

静态方法没有重写的概念

3.this和super

  1. 无论是this还是super都不可以在静态结构中使用
  2. this和super。 this.方法。 super.方法
  3. 静态结构是属于类的,静态结构是优先于对象就存在的
  4. this和super,必须有对象才能存在,必须要有实例

4.外部类

  • 一个public声明的类,类名必须和.java的文件名相同
  • 外部类就是两个类
  • 生成的.class文件就是两个独立的class
  • 开发中尽量不要写外部类

5.内部类

  • 类的组成结构:属性,方法,构造器(块),内部类
  • 在一个类内部进行其他类结构的嵌套操作

6.设计模式

设计模式是人们为软件开发中抽象出可重复利用的解决方案

软件开发工程师之间沟通的行话

面向对象的设计原则:1.开闭原则(Open Close Principle)

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

我们可以通过“抽象约束,封装变化”来实现开闭原则

通过接口或者抽象类为软件定义一个相对稳定的抽象层

将相同的可变因素封装在相同的具体实现类中,派生一个实体类就可以

2.里氏代换原则

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

3.依赖倒转原则

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

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

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

c.任何类都不应该从具体类派生

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

4.接口隔离原则

使用多个隔离接口

5.迪米特原则

6.合成复用原则

7.单一原则

一个类只做一件事

7.箭头函数

JDK8的新特性

函数式接口:如果一个接口只有一个抽象方法,这个接口就成为函数式接口

可以用注解@FunctionalInterface标记

总结:1.有参数,返回值

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

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

2、有参数,无返回值

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

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

3、无参数

()->{方法体}

8.单例模式

  • 一个类只有一个实例
  • 思路:

1.别人不能new,构造器私有化,不能在类的外部通过new去实例化

2.在该类的内部产生一个唯一的实例化对象,把他封装成static类型

3.定义一个静态方法,返回这个唯一的对象

  • 饿汉式单例模式

不管以后会不会使用到该实例化对象,先创建了再说

实现的办法:直接new实例化

  • 懒汉式(延迟加载)

什么时候调用getInstance方法,什么时候new

这种懒汉式在多线程环境中完全错误的,根本不能保证单例的状态

(加锁)

  • 内部类实现单例

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

结合了懒汉和饿汉式的优点:

只要不调用getInstance方法,就不会使用内部类

内部类一旦被使用一次就会被初始化一次,以后一直用的是Instance静态常量

###学习心得

今天学习了静态类和单例模式,掌握的不太好,课下还需多看录课和笔记

###掌握情况:一般

###课堂练习

public class Ch01 {
    static {
        System.out.println("外部类被加载。。。");
    }
    //实例内部类
    public class Inner{
        {
            System.out.println("实例内部类被加载。。。");
        }

    }
    //静态内部类
    public static class InnerStatic{
        static {
            System.out.println("静态内部类被加载。。。");
        }

    }

    public static void main(String[] args) {
//        Ch01 ch01 = new Ch01();
        //这就是实例内部类的对象
        Inner inner = new Ch01().new Inner();
        //这就是静态内部类的对象
        InnerStatic innerStatic = new Ch01.InnerStatic();

    }
}

###结果

 

 

标签:27,静态方法,07,静态,实例,static,new,刘禹彤,方法
来源: https://www.cnblogs.com/lyt0612/p/16526103.html

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

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

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

ICode9版权所有