2021-7-19第十天

第十天

Static关键字

Static关键字随着类的加载而加载,Static优先于对象而存在.它不能与this共存,(this代表当前类,是当前类对象的地址的引用)Static修饰的成员在对象还没有new的时候就已经占用内存了.
被静态所修饰可以被多个对象共享.
静态所修饰的方法或者变量直接通过类名.方法名/变量名的方式去访问
非静态的方法既可以访问静态变量,也可以访问非静态的变量,既可以调用静态的方法,也可以调用非静态的方法
静态的方法只能访问警惕的变量,也只能调用静态的方法.
简单来说就是静态只能访问静态.

生产文档

//在文档的目录下输入cmd打开控制台,在控制台中输入javadoc -d 文件名称 -author -version java文件(xxx.java)来创建说明文档
java -d xxx -author -version xxx.java

代码块优先级

在java中,使用=={ }== 括号括起来的内容,称之为代码块.

代码块分为以下几大类:

  1. 局部代码块:一般在方法的定义中使用,限定局部变量的声明周期.
  2. 构造代码块:一般在类的成员为止(类中,方法外),使用{}包裹起来,主要的作用就是给类中的成员进行数据初始化,特别需要注意的是,在执行构造方法之前要看有没有构造代码块,如果有构造代码快则先执行构造代码快中的内容.
  3. 静态代码块:在类的成员为止,直接使用static{},特点:随着类的加载而加载,优先于对象存在,作用:也可以通过static代码块,对一些操作(后期IO流创建文件/JDBC(Java链接数据库注册驱动)),静态代码块优先所有代码块先执行,而且只加载一次.
    优先级:
    静态代码块>>>构造代码块>>>构造方法

继承的概念

将多个类的共性内容,抽取到一个独立的类中,然后这多个类和独立的这个类产生一种关系:继承关系,使用关键字extends来标记他们之间的继承关系.

class Fu{}
class zi extends Fu{}//继承格式

继承关系的好处:

  1. 提高了代码的维护性.
  2. 提高了代码的复用性.
  3. 类和类之间的继承关系是 多态 的前提条件

程序在开发过程中,遵循着设计原则,开闭原则,接口分离原则,迪米特原则,依赖注入原则…这些设计上的原则都追求着共同的特性:“低(松)耦合,高内聚(重点)”.
但是在实际的开发过程中,我们难免会碰上耦合的情况,但是可以大大降低这种事情的发生(类与类之间的关系越少越好).
内聚:就是解决某件时间能力(一个类能完成的事情就不要交给多个类产生多个关系去完成).
降低耦合性就是通过反射来去创建类的实例对象.

继承的特点

继承是类与类之间的一种关系,叫做继承关系,继承只支持单继承,不支持多继承,但是支持嵌套继承,

class 子类 extends 父类{}//基本格式
//
class 子类 extends 父类1,父类2//有的语言中支持多继承,但是java不支持,此句仅供其他语句的参考
//
class 子类1 extends 父类{}
class 子类2 extends 子类1{}//java中的多层继承(嵌套继承)
使用继承时的注意事项

子类继承父类的同时,继承了父类的所有非私有成员,私有的成员外界不能访问,只能在本类中进行访问,但是可以通过公共的方法去间接地访问类中的私有成员.一般使用Set和Get方法去对父类的私有属性进行访问.
构造方法不能被继承,但是子类可以简洁通过super关键字访问父类的构造方法

class f {
    private int a;

    public int getA() {
        return a;
    }

    public void setA(int a) {
        this.a = a;
    }

    public f() {
        System.out.println("fw");
    }
    public f(int i){
        System.out.println("fy");
    }
}
class z extends f{
    public z() {
        System.out.println("zw");
    }

    public z(int i) {
        System.out.println("zy");
    }
}
public class Test7 {
    public static void main(String[] args) {
        z zi = new z();
        zi.setA(10);
        System.out.println("zi :"+zi.getA());
        System.out.println("---------------------------");
        z z2 = new z(2);
    }
}

类由以下三大方面组成:

  1. 成员变量
  2. 构造方法
  3. 成员方法

成员变量的继承

  • 子类继承父类,如果子类中的成员宾亮名称和父类的成员变量名称不一致,分别去调用访问即可.
  • 子类继承父类,如果子类中的成员变量名称和父类的成员变量名称一致的话

首先在子类的局部位置找,是否存在局部变量名称,如果有就使用.
如果没有就在子类的成员位置寻找,查看是否存在这个变量,如果存在就使用.
若果在子类成员位置中还是没有找见,那么就在父类的成员位置去找,如果有就使用.
若父类的成员位置都没有,就没有这个变量,程序就会报错
宗旨就是就近原则,选择最近的变量去使用.

继承中构造方法的访问:
  1. 子类继承父类,子类的所有构造方法都会去访问父类的无参构造方法.

子类的构造方法的第一句话中隐藏了super();因为子类中很可能会用到父类中的数据,所以在继承关系中最重要的一点就是让父类初始化------>即调用父类的构造方法,进行分层初始化(先调用父类的无参构造方法,再执行子类的构造方法)
super:代表的父类对象的空间表示(父类对象的地址值引用!)

  1. 如果父类中的无参构造方法没有,子类会怎么样?

子类中的所有构造方法都会报错,因为子类的所有构造方法默认父类的无参构造方法.
一般手动给出父类的无参构造方法,或者在子类的构造方法中的第一句话 super(xxx) 间接去访问父类的有参构造方法,
在子类的有参构造方法中: this(); —>访问本类的无参构造方法,然后再在子类的无参构造方法中间接访问父类的有参构造方法super(xxx) ;

在开发过程中,一般子类的无参构造默认访问父类的无参构造,子类的有参构造,直接访问父类的有参构造.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值