一.方法签名=方法名+参数列表
二.方法的重载(overload):
1)一个类中,方法名称相同,参数列表不同,称方法的重载
2)编译器在编译时,自动根据方法的签名绑定调用不同的方法
三.构造方法:
1)给成员变量赋初值
2)与类同名,没有返回值类型
3)在创建(new)对象时被自动调用
4)若不写构造,则系统默认提供一个无参构造,若手动写构造,则不再默认提供。
5)构造方法可以重载
四.this关键字:
1)指代当前对象,哪个对象调指的就是哪个对象,方法中访问成员变量,默认有个this.。
2)用法:
2.1)this.成员变量名---------访问成员变量
2.2)this.方法名()-------------调用方法(几乎不用)
2.3)this()-----------------------调用构造方法
五.内存管理:由JVM来分配并管理------了解为主
1)堆:
1.1)用于存储new出来的对象(包括成员变量)
1.2)成员变量的生命周期:创建对象时存在,对象被回收时消失。
1.3)垃圾回收器(GC)用于回收没有任何引用指向的对象
1.4)GC不定期回收,而回收的过程中透明的,若想快一些,调用System.gc()
1.5)内存泄露:不再使用的对象没有被及时的回收
建议:不再使用的对象将其引用及时的设置为null
2)栈:
2.1)用于存储所有的局部变量
2.2)局部变量的生命周期: 方法被调用时存在,方法执行结束后消失。
2.3)调用方法时,在栈中为该方法分配对应的栈桢,栈桢中包含方法中所有的局部变量(参数+变量),方法执行结束后,栈桢被清除,局部变量随之消失。
3)方法区:
3.1)用于存储.class字节码文件以及方法
3.2)方法只有一份,存在方法区中,通过this来区分不同的对象。
六.继承:
1)作用: 代码的重用
2)通过extends实现继承
3)父类/基类:所有子类所共有的变量和方法
子类/派生类:子类所特有的变量的方法
4)当子类继承父类后,子类具有:------子类所特有的+父类所共有的
5)一个类只能继承一个父类----单一继承,一个父类可以有多个子类
6)继承具有传递性
7)java规定: 构造子类之前必须先构造父类,子类构造方法的第一句默认有个super()调父类的无参构造。若自己通过super调用父类构造的话,则不再默认提供。super调用父类构造,必须位于子类构造的第1句。
七.super:指代当前对象的父类对象
用法:
1)super.成员变量名------访问父类的成员变量
2)super.方法名()-----------调用父类的方法
3)super()---------------------调用父类的构造方法
八.向上造型:
1)父类型的引用指向子类的对象
2)能点出来什么,看引用的类型
九.方法的重写(override):发生在父子类中,方法名相同,参数列表相同,方法体不同。重写方法被调用时,看对象的类型。
1)父子类中,方法签名相同,方法体不同
2)重写方法被调用时,看对象的类型
3)遵循"两同两小一大"规则:
3.1)两同:方法名相同,参数列表相同
3.2)两小:子类的返回值类型小于或等于父类-----一般都是等于
3.2.1)返回类型为void时,必须相同
3.2.2)返回类型为基本类型时,必须相同
3.2.3)返回类型为引用类型时,需小于或等于,子类抛出的异常小于或等于父类。
3.3)一大:子类的访问控制权限大于或等于父类
十.重写与重载的区别---常见面试题
1)重写:父子类中,方法名相同,参数列表相同
遵循"运行期"绑定,看对象的类型调用方法
2)重载:一个类中,方法名相同,参数列表不同
遵循"编译期"绑定,看引用的类型绑定方法
十一.package:包
1)作用:避免类的命名冲突
2)包名可以有层次结构,类完全限定名: 包名.类名
3)建议:包名所有字母都小写
十二.import:声明类/引入类
1)语法: import 包名.类名
2)同一包中的类,可以直接访问
3)不同包中的类,有两种访问方式:
3.1)完全限定名-----繁琐(不建议)
3.2)先import声明类,直接用类名-----建议
十三.访问控制修饰符:
1)public:公开的,任何地方
2)private:私有的,本类
3)protected:受保护的,本类、子类、同包类
4)默认的:什么也不写,本类、同包类
说明:
1)类的访问控制: public,默认的
2)类成员的访问控制: 如上4种都可以
建议:
数据(变量)私有化(private),行为(方法)公开化(public)
十四.static:静态的
1)静态变量:
1.1)由static修饰
1.2)属于类的,存在方法区中,只有一份
1.3)常常通过类名.来访问
1.4)何时用:所有对象的数据都一样时使用时
2)修饰方法:静态方法
2.1)由static修饰
2.2)没有隐式this传递,不能直接访问实例成员
2.3)常常通过类名.来访问
2.4)何时用:方法的操作仅与参数相关而与对象无关时使用
3)块:静态块
3.1)类被加载期间自动执行,只执行一次
3.2)何时用: 初始化静态资源(图片、音频、视频等)
十五.final:最终的(不可改变)
1)修饰变量:变量不能被修改
2)修饰方法:方法不能被重写
3)修饰类:类不能被继承
十六.内部类: ----此写法了解
1)类中套类,外面的类叫外部类,里面的类叫内部类
2)内部类通常只服务于外部类,对外不具备可见性
3)内部类对象通常只在外部类中创建
4)内部类中可以直接访问外部类成员(包括私有的)
5)内部类中隐式的引用指向创建它的外部类对象
----------外部类名.this (Mama.this Outer.this)
十七.匿名内部类:----掌握
1)想创建一个类的对象,并且对象还只创建一次,
这个类就没有意义了,此时,该类不必命名,
称之为匿名内部类