1 面向对象程序设计的三大基本特征:继承(Inheritence)、封装(Emcapsulation)、多态
(Polymorphism)
2 封装:类包含了数据与方法,将数据与方法放在一个类中就构成了封装。
3 方法调用需要通过对象来完成,方法调用的形式是:
对象变量.方法名([参数值1,参数值2,参数值3.。。。])
4 关于方法的注意事项:
1)在方法定义中,方法的返回值类型与return 后面的变量类型保持一致。
2)在方法调用的时候,给方法传递的参数需要与方法定义时的参数保持一致(参数个数
一致,参数类型一致)。
3)方法定义时的返回类型与接收方法返回值的变量类型保持一致。
4)方法定义时的参数叫做形式参数
5)方法调用时所赋予的具体指叫做实际参数
6)关键字void表示方法不返回值
7)如果方法不返回值那么声明方法的时候使用 void 关键字,
在方法定义中可以有两种情况视线不返回值:
a)不适用retutn语句、
b)使用return ,但return后面没有任何值或者变量,return后面只有一个分号,
表示退出方法,返回到方法的调用端。
5 类中的属性又叫做成员变量(member vaiable),属性用英文表示为propety或者attribute
6 对象(object)又叫做实例(instance)。生成一个对象的过程叫做实例化
7 命名约定
a)类:首字母大写,如果一个类名由多个单词构成,那么每个单词的首字母都大写并且中间不使用任何连接符,比如Person类,MenberTest类。
b)方法:首字母小写,如果一个方法由多个单词构成,那么第一个单词的所有字母全都
小写,从第二个单词开始,每个单词的首字母大写,比如add,addThreeint。
c)属性:命名约定与方法相同,比如age ,ageOfPerson。
8 属性需要定义在类中,又叫做成员变量,而定义在方法中的变量叫做局部变量
如何定义属性
Public class Person
{
修饰符 类型 属性名称
}
如何使用属性?与方法一样,使用运算符,首先需要生成类的实例,然后使用实例+“.”的方式来使用属性。
比如:
Person person = new Person()
Person.age
9 局部变量使用前必须要声明并赋初值;成员变量使用前必须要声明,但可以不赋初值。
成员变量与局部变量的区别
[if !supportLists]a) [endif]无论书局部变量还是成员变量,使用前都需要声明(定义)。
[if !supportLists]b) [endif]对于局部变量来说,使用前必须初始化,对于成员变量来说,使用前可以不初始化,如果没有初始化变量就开始使用,那么每个类型都有一个默认的初始值。
i byte、short、int、long类型的初始值为0
ii float、double类型的初始值为0.0
iii char类型的初始值“\u0000”
10 引用类型 (reference type):引用类型是用在对象上的,一个对象可以被多个引用所指向,但同一时刻,每个引用只能指向唯一的一个对象,如果一个对象被多个引用所指向,那么无论那个引用对对象的属性进行了修改,都会反映到其他对象当中。
11 如果一个类中包含了属性与方法,那么该类的每一个对象都具有自己的属性,但无论一个类有多少方法,这些对象共享一个方法。
12 关于方法参数的传递的总结:对于java中的方法参数传递,无论传递的是原生数据类型还是引用类型,统一是传值。
13 什么类型的引用就能指向什么类型的对象,比如People类型的引用就能指向people类型的对象,但不能指向其他的对象比如student对象
People people = new People();正确
People people = new student();错误
14 构造方法(Constiructor):构造方法用于完成对象属性的初始化工作,构造方法的特点;
[if !supportLists]A) [endif]构造方法的名字必须与类名完一致
[if !supportLists]B) [endif]构造方法没有返回值,连void也不能出现。
[if !supportLists]C) [endif]如果在定义一个类的时候,没有声明构造方法,那么java编译器就会自动为类添加一个没有参数且方法体为空的构造方法
[if !supportLists]D) [endif]如果在定义一个类的时候为类声明了构造方法,那么java编译器就不会再为类添加构造方法了。
[if !supportLists]E) [endif]不能显示调用类的构造方法,构造方法是通过new关键字隐式调用。
15 new关键字再生成对象时完成了三件事。
A) 为对象开辟工作空间
B)调用类的构造方法
C)将生成的对象地址返回。
16 使用new生成对象的时候,后面的小括号()表示构造方法的参数列表,如果构造方法不接收参数,那么小括号中的内容为空:如果构造方法接收参数,那么小括号中的实际参数就需要与构造方法定义中的形式参数保持一致(参数数量一致,参数类型一致,按照顺序逐一赋值)。
17 方法重载(Overload)表示两个或多个名字相同,但方法参数不同。方法参数不同有两层含义:1、参数个数不同2、参数类型不同。注意:方法的返回值对重载没有任何影响。
18 构造方法重载:只许看参数即可。如果想在一个构造方法中调用另外一个构造方法,那么可以使用this()的方式调用,this()括号中的参数表示目标构造方法的参数。This()必须要作为构造方法的第一条语句,换句话说,this()之前不能有任何可执行的代码。
19 继承(Inheritance):java是单继承的,意味着一个类只能从另一个类继承(被继承的类叫做父类【基类,bass
class】,继承的类叫做子类 ),java中的继承使用extends。
20 当生成子类对象时java默认首先调用父类的不带参数的构造方法,然后执行该构造方法,生成父类的对象。接下来再去调用子类的构造方法,生成子类的对象。【想要生成子类的对象,首先需要生成父类的对象,没有父类的对象就没有子类的对象。比如说:没有父亲就没有孩子。】 。
21 super 关键字:super 表示对父类对象的引用。
22 如果子类使用super()调用父类的某个构造方法,那么在执行的时候就会寻找与super()所对应的构造方法而不会再去寻找父类的不带参数的构造方法。与this一样,super也必须位与构造方法的第一条执行语句,前面不能有其他可执行语句
23 关于继承的三点
a) 父类有的,子类也有。
b) 父类没有的,子类可以增加。
[if !supportLists]c) [endif]父类有的,子类可以改变。
24 关于继承的注意事项
a) 构造方法不能被继承
b) 方法和属性可以被继承
c) 子类的构造方法隐式地调用父类的不带参数的构造方法
d) 当父类没有不带参数的构造方法时,子类需要用 super来显示地调用父类的构造方法super指的是对父类的引用。
24 方法重写(Override):又叫做覆写,子类与父类的方法返回类型一样、方法名称一样,参数一样,这样我们说子类与父类 的构造方法构成了重写。
25 方法重写与方法重载之间的关系:重载发生在同一个类的内部的两个或多个方法,重写发生在父类与子类之间 。
29 抽象类(abstract
class): 使用了abstract 关键字所修饰的类叫做抽象类。抽象类无法实例化,也就是说,不能new出来一个抽象类的对象(实例)。
30 抽象方法(abstract
method):使用abstract 关键字所修饰的方法叫做抽象方法。抽象方法需要定义在抽象类中。相对于抽象方法,之前的方法叫做具体方法(有声明有实现)。
31如果一个类包含了抽象方法,那么这个类一定是抽象类。
32 如果某个类是一个抽象类,那么这个类是可以包含具体方法的(有声明有实现)。
26无论什么情况下,只要一个类是抽象类,那么这个类就无法实例化。
27 在子类继承父类(父类是个抽象类)的情况下,那么该子类必须要实现父类中所定义的所有抽象方法;否则,该子类需要声明一个abstract
class。
28 接口(interface):
网友评论