9、构造方法
1)构造方法的名称必须与它所在类名称完全相同,并且不包含返回值类型描述部分。
2)构造方法在对象实例化时被调用,如果类的创建者没有提供构造方法,则由系统自动分配一个无参构造方法。
3)构造方法不能有任何非访问性质的修饰符修饰,例如static、final、synchronized、abstract等。
解释:构造方法用于初始化一个实例对象,所以static修饰是没有任何意义的;多个线程不会同时创建内存地址相同的同一个对象,所以synchronized修饰没有意义;构造方法不能被子类继承,所以final和abstract修饰没有意义。
10、成员变量和局部变量
直接在类中声明的变量叫成员变量,在方法内定义的变量叫局部变量。成员变量在整个类内都有效;局部变量只在方法内有效。
如果未对成员变量设置初始值,则系统会根据成员变量的类型自动分配初始值,例如int分配初始值0、boolean分配初始值false,而自定义类型则分配初始值null。
1)、 如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在同名局部变量所在方法内暂时失效。
2)、如果需要在局部变量有效的作用域内使用同名的成员变量,则必须使用关键字this来引用成员变量。
11、方法的重载和重写
方法重载是指一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。重载发生在同一个类中的不同方法之间。
方法的重写发生的子类与父类之间,若子类的方法名与父类相同,参数个数和参数类型也完全相同时,叫做方法重写。方法重写可以使子类替换父类中并不适合子类的状态(变量)和行为(方法),从而使继承更加灵活。
子类覆盖父类的同名方法叫做重写,重写必须满足如下条件:
(1)方法的参数个数必须相同。
(2)方法的参数对应的数据类型必须相同。
(3)方法重写时不得修改返回值的类型。
(4)子类不得降低父类同名方法的访问级别。
12、Java的包
1>.包的命名规则:
1.使用英文字母作为包的名称。
2.包名要求全部使用小写字母表示(多个单词也全部小写)。
3.如果包名包含多个层次,每个层次应该用“.”分割。
2>包的引入:使用import关键字可以将其他包中的类引入到当 前类中以备使用。
13、封装
1>方法就是一个最基本的封装题。
2>类其实也是一个封装体
封装的好处:
1>提高了代码的复用性
2>隐藏了实现细节,还要对外提供可以访问的方式
3>提高了安全性
14、继承
继承是面向对象编程的三大特征之一。
继承是一种基于已有的类创建新类的机制。利用继承,我们可以 先创建一个具有共有属性的一般类,根据该一般类再派生出具有 特殊属性的新类,新类继承一般类的状态(成员变量)和行为(方 法),并根据需要增加额外的状态(成员变量)和行为(方法)。由继承而得到的类称为子类(或派生类),被继承的类称为父类(或 超类)。
类的继承的有点:
1>、提高了代码的复用性
2>、增加了类与类之间的关系,让类呈现不同的形态
3>、
15、多态
当一个父类存在多个派生类的时候,并且每个派生类都重写了父类中的某个方法,那么父类的该方法在不同的子类中就出现了不同的行为,这就是多态的一种表现形式。
16、this的使用规则
1>.this是当前类的内部对象,所以和类的外部对象访问类成员变量和方法的规则一致,语法:this.<变量名>和this.<方法名>。
2>.this只能在当前类的内部使用,但是,不能在static修饰的方法(即类方法)中使用。
3>.this在实例方法中通常被省略,除非实例方法中包含与成员变量同名的局部变量时,访问成员变量需要使用this。
4>.当一个类中包含多个构造方法的时,如果其中一个构造方法要调用另外的构造方法时,使用this关键字, 引用时必须在首行。
17、super的使用规则
1>.super可以访问被子类重写的父类同名方法和被子类隐藏的父类的成员变量。
2>.可以使用super关键字调用父类的构造方法。
18、关键字final
final关键字可以用来修饰类、方法和变量。
1>.final修饰的类不能被继承。
2>.final修饰的方法不能被重写。
3>.final修饰的变量是常量,不能修改其值.
19、关键字abstract
abstract关键字可以用来修饰类和方法。
1>.abstract修饰的类叫做抽象类,该类不能被实例化,也就是不能使用关键字new来创建该类对象。
2>.abstract修饰的方法叫做抽象方法,抽象方法只有声明部分,而没有具体的方法体。
抽象类重要规则:
1>.如果一个非抽象类是一个abstract类的子类,它必须具体实现父类的所有abstract方法。
2>.如果一个类中含有abstract方法,那么这个类必须用abstract来修饰(abstract类也可以没有abstract方法,但abstract方法必须出现在abstract类中)。
3>.一个abstract类只关心它的子类是否具有某种功能,并不关心功能的具体行为,功能的具体行为由子类负责实现。
20、接口
当一个抽象类中的方法全部为抽象方法时,可以使用interface关键字将这个抽象类定义为接口。
在java中一个类只能有一个父类,如果某个类需要继承多个类的变量(状态)和方法(行为),那么java提供了接口方式,一个类可以实现多个接口,以获得多重继承的特性。
21、关键字implements
当一个类需要实现某个接口时,使用implements关键字。
class <类名> implements <接口名> {}
1>.如果一个类实现了多个接口的时候,用“,”分割多个接口的名称。
class <类名> implements <接口名1>,<接口名2> {}
2>.在类中实现接口的方法时,方法的名字、返回类型、参数个数及参数类型必须与接口中的完全一致。
3>.如果一个类实现了一个接口,但没有实现接口中的所有方法,那么这个类必须是abstract类。