Java——面向对象(static关键字开始)

发布时间 2023-11-01 17:35:03作者: 在这么冷的天

一、static

可以修饰成员变量和成员方法

关键字特点:

  随着类的加载而加载;

  优先于对象存在;

  被类的所有对象共享;

  可以通过类名直接调用;

注意事项:

  在静态方法中是没有this关键字的

  静态的方法只能访问静态的成员变量和成员方法

  静态的成员,是属于类本身的东西,是优先于对象而存在的

静态的内容存在于方法区的静态区

静态变量和成员变量的区

所属不同

  静态变量属于类,所以也称为类变量

  成员变量属于对象,所以也称为实例变量

内存中位置不同

  静态变量存储于方法区的静态区

  成员变量存储于堆内存

内存出现时间不同

  静态变量随着类的加载而加载,随着类的消失而消失

  成员变量随着对象的创建而存在,随着对象的消失而消失

调用不同

  静态变量可以通过类名调用,也可以通过对象调用

  成员变量只能通过类名调用

二、帮助文档

如何使用

1.找到文档,打开文档

2,点击索引,搜查要查询的类

3. 看在哪个包下,但凡不在java.lang包下的都需要进行导包

4.查看继承和实现关系

4,看这个类的结构

  看这个类的成员变量

  看这个类的构造方法

  看这个类的成员方法

(如果一个类没有构造方法,意味着这个类是一个工具类。特点:变量或者方法都是被static修饰)

三、代码块

顾名思意就是使用{}括起来的代码,叫做代码块,根据其定义的位置和语句格式不同,分为4种代码块:
局部代码块:定义在方法内部的代码块,叫做局部代码块,局部代码块之间的执行顺序是根据定义的上下顺序来的
构造代码快:定义在类中方法外,写的格式与局部代码块的一样,在创建对象的时候被执行,优先于构造方法执行,与构造方法的顺序无关
静态代码块:定义在类中方法外的,格式是需要使用static关键字进行修饰,只会在程序运行之前执行一次,后面不会再执行
同步代码块

四、继承

概述

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可

通过extends可以实现类与类的继承

  class 子类名 extends 父类名{}

单独的这个类可以成为父类,基类或者超类;这多个类可以称为子类或者派生类

有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的继承上,还可以定义自己的成员。

好处

  提高了代码的复用性:多个类的相同成员可以放到同一个类中

  提高了代码的维护性:如果功能的代码需要修改,修改一处即可

  让类与类之间产生了关系,是多态的前提:这也是继承的一个弊端,类的耦合性很强

特点(注意事项)

1、java中的类与类之间不能进行多继承,只能进行单继承,但是可以进行多层继承,形成继承体系
2、子类只能继承父类中所有非私有的成员(成员变量和成员方法)
3、子类无法继承父类中的构造方法,但是要想初始化子类,必须先初始化父类(指的是执行一次父类中任意一个构造方法)
4、不要为了部分功能去使用继承
5、什么时候使用继承?满足英语中的 is a的关系

继承中成员变量的关系(就近原则)

在子类方法中访问一个变量

首先在子类局部范围找

然后在子类成员范围找

最后在父类成员范围找

如果都没找到就报错      

this和super的异同之处

  相同:使用语句都相似

    访问成员变量:this.成员变量  super.成员变量

    访问成员方法: this.成员方法(...)    super.成员方法(...)

    访问构造方法:this(...)   super(...)

  不同:this代表的是当前类的对象   super代表的是直接父类的引用

继承中构造方法的关系

  子类通过super去显示调用父类其他的带参的构造方法

  子类通过this其调用本类的其他构造方法

    (本类的其他构造方法也必须首先访问了父类的构造)

  一定要注意

     super(...)或者this(...)必须出现在第一条语句上

     否则就会有父类数据的多次初始化

继承中成员方法的关系

方法的重写:在继承关系中,子类的方法的声明(返回值类型,方法名,参数列表)与父类的声明都一样,只是实现不一样,这样的现象叫做方法的重写

      判断一个方法能不能重写,可以在方法的上边加上一个注解@override,如果加上不报错,就说明可以重写

面试题:重写与重载的区别?Override与Overload的区别?
方法的重写:在继承关系中,子类中的方法的声明(返回值类型,方法名,参数列表)与父类中的方法声明都一样,只是实现不一样,这样的现象,叫做方法的重写。
方法的重载:在同一个类中,方法的方法名相同,参数列表不同,这个现象叫做方法的重载,与返回值无关。

重写的注意事项:

  1.父类中私有的方法不能被重写,因为私有的方法子类根本不能继承

  2.子类重写父类方法时,权限不能更低,推荐除了特殊要求外,子类重写父类的方法要保持一致

    顺序:public protected 默认 private

  3.父类静态方法,子类无法重写