一、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.父类静态方法,子类无法重写