8.9晨写

本文详细介绍了Java中的代码块(局部、构造和静态)、继承概念及其优势,以及静态关键字的使用。讲解了构造方法在继承中的访问规则,强调了子类构造方法默认访问父类无参构造的重要性,并给出了处理有参构造方法的解决方案。此外,还讨论了静态成员的特性,包括其加载时机和共享性质,以及在实际开发中的应用场景。

8.9晨写

1.代码块

代码块:     使用{}括起来的内容
     分类:
          局部代码块,就是在方法定义中使用{}
                  {},作用:就是限定局部变量的生命周期;

           构造代码块:---在类的成员位置定义的{},它有特点:在执行构造方法之前,如果类中有构造代码块,
           优先执行构造代码块,作用:也可以给类的成员的数据进行初始化; (实际开发很少见到构造代码块)

           只要执行构造方法,如果存在构代码块,它必须优先执行,然后才是构造方法...

         静态代码块:
         类就加载一次,静态代码块也就执行一次!
              格式
                      static{ --->跟静态相关的都和类有关系,随着类的加载而加载;

                          里面书写代码

                      }

                     静态代码块,构造方法,构造代码块
                     优先级:静态代码块 > 构造代码块> 构造方法,而且每次执行构造方法之前,优先执行所有的构造构造代码块
package com.qf.code_09;

//定义一个Code类
class Code{
    //静态代码块
    static{
        int x = 1000 ;
        System.out.println(x );
    }

    //无参构造方法
    public Code(){
        System.out.println("code...");
    }
    //构造代码块:类的成员位置
    {
        int x = 100 ;
        System.out.println(x);
    }
    //构造代码块
    {
        int y = 200 ;
        System.out.println(y) ;
    }
    //有参构造方法
    public Code(String name){
        System.out.println("code"+name);

    }

    //静态代码块
    static{
        int y = 2000 ;
        System.out.println(y);
    }
}

//测试类
public class CodeDemo {
    public static void main(String[] args) {
        int x = 10  ;
        System.out.println(x);

        //局部代码块
        {
            int y = 20 ;
            System.out.println(y);
        }
       // System.out.println(y);
        System.out.println("----------------------------------------------") ;
        //通过无参构造方法创建Code类对象
        Code code = new Code() ;
        Code code2 = new Code("hello") ;
    }
}

2.继承

继承:
         将多个类的共性内容抽取出来,放在一个独立的类中,让这个独立的类和其他类产生一种关系
 "继承"---关键字 extends
         格式:
          class 父类名{
                 共性内容:姓名,年龄.....
                 提供公共的访问方法setXXX()/getXXX()
         }
          class 子类名 extends 父类名{}

          继承的好处:
              1)可以提高代码复用性
              2)可以提高代码的维护性,后期便于维护,针对子类和父类进行维护(子父关系明确)
              3)类与类产生的继承关系,是后面讲"多态"的前提条件;


              在Java中有一个开发原则 "低耦合,高内聚"(以后所有的Java设计模式都需要遵循这一个原则)
              耦合性:开发中是永远避免不了,可以降低(耦合:类和类的关系)
              内聚性:指的是某个类完成某个功能的一种能力; 尽量不要产生继承关系来完成一个功能,一个类能完成一个类完成;
              低耦合:降低耦合性,减少类和类的关系;
继承的特点:
          1)在Java语言中,类和的类的关系是一种继承关系,这个继承只能支持"单继承",不支持多继承
                  class 父{}
                  class 父2{}
                  class 子 extends 父,父2{} 多继承:不支持
                   class 子 extends 父{} :正常的语法格式
          2)类和类关系,虽然不支持多继承,但是层层单继承----> 多层继承
注意的问题:
      1.子类继承父类,对于非私有的成员,直接可以继承过来,但是如果私有成员,它可以通过公共的访问可以访问,但是直接访问的;
      2.被私有修饰的东西(成员变量/成员方法),只能在当前类访问的;
  在继承关系中,构造方法的访问问题(重点)
       子类继承父类,子类的所有构造方法都默认访问父类的无参构造方法
       为什么?子类继承父类,会用到父类的数据,需要让父类先进行初始化;   一个类初始化的---肯定需要执行构造方法的
    面试题:
           如果一个父类存在有参构造方法,没有无参构造方法,子类的所有构造会出现什么问题?出现了问题,怎么解决?
 
           子类的所有全部构造方法报错,为什么? 子类继承父类,子类的所有构造方法都默认访问父类的无参构造方法
 
                       方案1:
                             1)手动给出无参构造方法
 
                             2)假设,人家现在就不需要让你给出父类的无参构造方法;
                             就需要让子类的构造方法,显示的访问父类的有参构造方法
 
                             ----要使用关键字 super:代表父类空间标识(代表的父类对象的地址值引用!)
 
                             super() :访问父类的无参构造方法
                             super(xxx) :访问父类的有参构造方法
                             这些super一定是在子类构造方法中的第一句话
 
                            3)保证子类的所有的构造方法某一个构造方法,让父类初始化完毕即可;
                            先通过子类的无参构造方法里面---this(xxx):访问本类(子类)有参构造方法
                            在子类的有参构造方法的第一话:让父类初始化 super(xxx):间接访问父类的有参构造方法
 
               子类继承父类,一定要先执行父类的构造方法,初始化完毕之后;然后才能执行子类的构造方法---分层初始化

3.static

static关键字的特点:
      1)被静态修饰的随着类的加载而加载,优先于对象存在;
      2)不能和this共存;
      3)本身含义就是共享,共用;可以多个对象共享共用;
                  这也是告诉我们,什么将某个属性定义static
                 举例: 饮水机的水----共享,共用
                      自己水杯中的水---不行的

                    或者说:三个窗口同时出售100张电影票,  100张票被三个窗口共用;
      4)被静态修饰的成员变量或者成员方法(静态变量/静态方法) (掌握)
              访问的方式:
                      可以使用对象名来访问
                      但是,对于系统来说(jvm)静态的东西:变量/方法
                      都是类名直接访问;
                      类名.变量名;
                      类名.方法名()

                      上次用的java.lang.Math
                                  public static double random()
                                  Math.random() ;

      静态的使用场景适用于范围:(记忆的)
                  简单记忆:静态只能访问静态;

                          静态方法中只能访问静态变量
                          静态方法只能调用静态方法;
                          非静态方法皆可以访问静态的东西也可以访问非静态的东西;

### Proteus 8.9 网络连接的配置方法 Proteus 8.9 是一款功能强大的电子设计自动化(EDA)工具,支持电路仿真和单片机仿真。在进行复杂电路设计时,网络连接的配置是确保电路功能正常的关键步骤之一。以下是关于 Proteus 8.9 中网络连接法或配置方法的详细介绍。 #### 1. 网络标签的基本概念 在网络连接中,网络标签(Net Labels)用于标识电路中的节点,使得即使物理连线不存在,也可以通过相同的网络标签实现电气连接。这种方式可以简化复杂电路的设计,并提高可读性[^3]。 #### 2. 网络标签的添加方法 要添加网络标签,可以按照以下步骤操作: - 在 Proteus 软件中打开设计界面。 - 在工具栏中找到并选择“Net Label”工具。 - 在需要标记的节点上放置网络标签。 - 双击网络标签以编辑其名称,确保同一网络上的所有节点具有相同的名称。 例如,如果一个电路中有多个接地节点,可以为每个接地节点添加名为“GND”的网络标签,这样即使没有直接连线,这些节点也会被视为电气连接[^3]。 #### 3. 网络连接的高级配置 对于更复杂的电路设计,可能需要使用总线(Bus)来管理多条信号线。总线允许将多条信号线组合在一起,从而减少设计中的混乱。具体操作如下: - 使用“Bus”工具创建总线。 - 将需要组合的信号线连接到总线上。 - 为每条信号线分配唯一的名称,以便在后续仿真中识别。 ```python # 示例:定义一个简单的总线结构 BUS_NAME = "DATA_BUS" SIGNAL_NAMES = ["D0", "D1", "D2", "D3"] for signal in SIGNAL_NAMES: print(f"Connecting {signal} to {BUS_NAME}") ``` #### 4. 常见问题及解决方法 在配置网络连接时,可能会遇到一些常见问题,例如网络标签无法正确识别或总线连接失败。以下是一些解决方案: - 确保所有网络标签的名称拼一致且区分大小。 - 检查是否有隐藏的节点未被正确连接。 - 如果使用了总线,确保每条信号线都已明确命名。 #### 5. 网络连接的仿真验证 完成网络连接配置后,可以通过 Proteus 的仿真功能验证其正确性。启动仿真后,观察各节点的电压和电流值是否符合预期。如果发现异常,可以返回设计界面检查网络标签和总线配置[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值