1、代码块(掌握)
1、概述
由{}扩起来的代码称之为代码块,类或者方法也可认为是代码块,但是一般不这么说,我们平时所说的代码块指的是孤零零的{}
2、代码块作用
局部代码块作用
让变量尽可能早的从内存中消失,提高效率
构造代码块作用是
把所有构造方法中的共同的内容定义在构造代码块中,提高代码复用性,代码块先于构造方法执行,但是一般不用,最终目的初始化成员变量
工作中用的很少,主要应对面试
注意:我们以后说的代码块仅仅指构造代码块,并且这个东西在开发中极少用到
2、继承(掌握)
1、概述-什么是继承,继承的由来(理解)
1、多个类中存在相同属性和行为时,将这些内容抽取到单个类中,那么多个类无需在定义属性和行为,只需要继承即可
2、多个类称为 子类或派生类, 单个类称为父类或者超类
3、通过extends关键字让他们产生关系
2、继承的好处及特点(掌握)
好处:
1、提高代码的复用性
2、让类与类产生关系,是多态的前提
特点:
1、JAVA中的类只支持单继承,不支持多继承。(因为如果可以多继承,就会出现调用不明确的问题)
2、JAVA支持多层继承 (继承体系)
3、什么时候使用继承(掌握)
子类是父类的一种,如果B类是A类的一种就用继承关系
注意:不要为了获取某个功能而去继承
3、子父类使用变量时,变量的查找顺序(掌握)
1、首先在局部范围找,有就使用
2、在本类成员位置找,有就使用
3、在父类成员位置找,有就使用,没有就报错
4、this和super比较(掌握)
1、概念上的区别(理解)
super代表的是父类内存空间标识
this代表所在方法所属对象的引用
2、什么时候使用(理解)
1、当子父类中出现同名成员可以用super区分
2、子类调用父类的构造方法可以用super
3、调用方式(掌握)
1、super:
通过super可以直接调用父类的构造方法,成员变量,成员方法。调用构造方法:super()
调用成员变量:super.变量名
调用成员方法:super.方法名()
2、this:
通过this可以直接调动本类的构造方法,成员变量,成员方法调用构造方法:this()
调用成员变量:this.变量名
调用成员方法:this.方法名()
4、注意事项(掌握)
1、this代表本类对象的引用
2、super代表父类内存空间的标志
5、重写override和重载overload(掌握)
1、重写override概念(掌握)
子父类关系中,子类中存在与父类中方法声明完全一样的方法叫重写
一句话:除了方法体以外其他都相同,但是子类修饰符权限要大于等于父类
2、重载overload概念(掌握)
一个类中或者子父类关系中存在多个同名方法,并且参数列表不同的方法 叫重载
子父类关系中:子类中的方法和父类中的方法构成了重载关系
3、重写的作用\应用(理解)
升级改造父类的方法
4、注意(掌握)
只有方法才存在重写,变量不存在
6、子父类间成员方法注意事项(掌握)
1、父类中私有方法不能被覆盖
2、子类方法访问权限大于父类方法访问权限 (父类如果是public,子类只能是public)
7、子父类间构造方法特点和注意事项(掌握)
1、子类中构造方法的特点(理解)
子类默认构造方法都访问了父类的无参构造方法,子类构造方法中都有默认语句super(),并且默认只能是无参的super()语句
因为子类会具备父类中非私有数据,这个初始化靠父类完成,所以先调用父类构造方法来初始化父类中的数据
2、如果父类无无参构造,子类构造如何访问父类构造(掌握)
1、通过super(参数)调用父类带参构造方法
2、通过this(..)调用本类构造方法 //知道就行,一般不用,但是需要注意的是如果一个类中所有的构造方法第一句都调用this(..),这样是错误
3、构造方法执行完后会创建该类的对象吗?
不一定,子类的构造方法第一行调用父类的构造方法时,不会创建对象
比如super(),调用了构造方法但是没有创见对象
4、注意
构造方法中的this()和super()语句必须放第一行,并且只能取其一
8、子父类间静态代码块,代码块,构造方法执行顺序(掌握)
1、优先级
静态代码块 -> 构造代码块 ->构造方法
2、执行顺序
父类静态代码块->子类静态代码块->父类构造代码块->父类构造方法->子类构造代码块->子类构造方法
3、静态代码块,构造代码块,构造方法的作用
都是给成员变量进行赋值,只不过静态代码块给静态成员变量赋值
9、子类如何使用父类的私有成员变量(理解)
1、子类调用父类的带参构造访问父类的私有属性,但是只能给父类的私有属性赋值
2、子类调用父类的set方法给父类中的私有成员变量赋值,通过调用父类的get方法获取父类的成员变量
10、final关键字的概述和使用(掌握)
1、概述
很多时候有些方法内容时不能被重写的。而我们知道父类方法声明为public就可以被重写。针对这种情况,我们可以做个标记,告诉别人此类不能被重写
final关键字:最终的意思,可以修饰类,变量,成员方法
2、被final修饰的内容的特点(掌握)
被final修饰的方法不能被重写
被final修饰的类不能被继承
被final修饰的变量其实是常量,命名规则:全部大写,每一个单词间用_分割
3、常量
字面值常量 : ’a’,’aa’,234
自定义常量:被final修饰的变量
4、被final修饰的类有哪些(慢慢记)
java.lang.reflect.Array
boolean的包装类java.lang.Boolean
byte的包装类java.lang.Byte
char的包装类java.lang.Character
double的包装类java.lang.Double
float的包装类java.lang.Float
int的包装类java.lang.Integer
long的包装类java.lang.Long
short的包装类java.lang.Short
void的包装类java.lang.Void
String类java.lang.String
System类java.lang.System
Class类java.lang.Class<T>
编译器java.lang.Compiler类
Math类java.lang.Math
两个可变字符序列类java.lang.StringBuffer
与java.lang.StringBuilder
Scanner类java.util.Scanner
正则匹配器java.util.regex.Matcher
正则表达式编译形式类java.util.regex.Pattern
5、被final修饰的变量注意事项(理解)
1、被final修饰的变量必须被显示的赋值一次
1、在定义变量的时候直接赋值 final NAME = "";2、在构造方法中对它进行赋值
3、在构造代码块中对它进行赋值
6、被final和static同时修饰的成员变量有什么特点(理解)
1、被final和static同时修饰的变量必须被显示的赋值一次
1、在定义变量的时候直接赋值 static final NAME = "";2、通过静态代码块赋值(特例,接口中除外)
一般情况final修饰成员变量的时候,一般和static还有public配合使用,并且显示给一个初始化值
7、被static修饰的内容随着类的加载而加载,并没有创建对象,那为什么还会有默认的初始化值
因为他在方法区中的静态方法区中,在这里面的数据也会有默认的初始化值
11、标准代码练习,至少3次(掌握)
注意:不要所有的类都定义到一个Java源文件中,这是非常不好的开发习惯.一个Java源文件对应一个class类,
父类 |
|
子类 |
|
测试 |
|
12、今天必须掌握的内容。以及常见的笔试题和面试题(学完这个就可以放心学习后面的知识了)
1、说说什么是继承,继承的由来
见上面
2、说说继承的好处和特点,什么时候定义继承关系
见上面
3、说说继承关系中成员内容的特点
成员变量:就近原则
成员方法:重载,重写
构造方法:所有类都直接或间接继承Object类,子类构造第一行默认调用super(),如果父类无空参构造,必须通过super(参数)显示调用父类的有参构造
4、谈谈this和super
见上面。从概念和使用两方面说即可
概念
this代表本来类对象的引用,谁调用this就代表谁
super代表父类内存空间的标识
使用
都可以调用成员变量,成员方法,构造方法。只不过this调用的本类的,super调用的父类的
5、谈谈final关键字
见上面 可以修饰什么,被修饰的内容的特点,哪些类别final修饰,修饰的成员变量的初始化方式有几种,修饰的静态成员变量 的初始化有几种,继续坎静态..
6、说说重写和重载
见上面(必须说前提)说完以后说说这其实是继承中成员方法的特点,可以在说说成员变量,构造方法的特点
6、今天的标准代码必须敲的非常熟练
什么叫熟练?刚开始敲得时候一般在想为什么这么写,熟练后想的就是就应该这么写,哪有为什么,当什么都觉得利索应当的时候表示熟练了
7、说说代码块,静态代码块的作用
代码块:给成员变量赋值
静态代码块:给静态成员变量赋值的
8、如何给本类的私有成员赋值,如何给父类的私有成员赋值
如何给本类的私有成员赋值,构造方法,set方法
如何给父类的私有成员赋值,子类通过调用父类构造super(实际参数列表)给父类的私有属性赋值,还可以调用父类的set方法给父类的私有属性赋值
9、在子父类关系中,静态代码块,代码块,构造方法的执行顺序
父类静态代码块,子类静态代码块,父类的构造代码块,父类的构造方法,子类的构造代码块,子类的构造方法