1、类:
类是具有相同属性和方法的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和方法两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性和方法两个主要部分。
Java中的类实现包括两个部分:类声明和类体。
1.1类的声明格式:
[pbulic] [abstract/final] class className [extends Parentname] [implements ]
{Iname1,Iname2...} 其中,修饰符public,abstract,final 说明了类的属性,className为类名,superclassName为类的父类的名字,interfaceNameList为类所实现的接口列表。
1.1.1访问修改符(默认,private,public,protected):
private:私有。只能被当前class的花括号中的代码访问到。出了这个花括号,访问不到了。
public:公有。能被当前class花括号内访问。也能被其它位置的对象访问。
默认:在当前class花括号中可以访问。当前包中的其它类中也可以访问。出了当前包,就访问不到了。
protected :可以被同一个包及其它包中的派生类访问。
1.1.2abstract :
1.抽象类:不知道是具体什么东西的类,可以没有抽象方法。抽象类不能直接用new。
定义方式:abstract class 类名。
抽象类中,可以有抽象方法,也可以有非抽象方法。抽象类中还可以有成员变量。
2.抽象方法:不知道具体是干什么事情的方法,没有函数体。abstract 返回类型 函数名(形参)。抽象方法的类必须是抽象类。
抽象类的派生类中,可以不实现某些抽象方法,但派生类必须要声明为抽象类。
以后遇到抽象类,两种用法:1.找找有没有它的派生类,用它的派生类。2.自己写一个类,派生自这个抽象类。
1.1.3 final:
final可以修饰成员变量,成员方法,类。
final修饰成员变量——当常量来用。
final修饰类。此类不能被继承。
final修饰方法。此方向不许被重写。
1.2类体
class className{
[public | protected | private ] [static] [final] type variableName;
//成员变量
[public | protected | private ] [static] [final | abstract] returnType methodName([paramList]) {statements}//成员方法
}
1.2.1成员变量
定义:访问修饰符 类型 变量名.
成员变量限定词的含义:
Private:私有。只能被当前class的花括号中的代码访问到。出了这个花括号,访问不到了。
public:公有。能被当前class花括号内访问。也能被其它位置的对象访问。
默认:在当前class花括号中可以访问。当前包中的其它类中也可以访问。出了当前包,就访问不到了。
protected :可以被同一个包及其它包中的派生类访问。
static: 静态变量
final: 常量;
成员变量的定义,如果不赋初始值,会使用默认值。而函数内的局部变量不赋值初始值会出问题。
成员变量可以被当前类的所有的成员函数都可以调用。而函数里面的变量只能在当前花括号中可以使用。
1.2.1成员方法访问修饰符 返回类型 函数名(形参){函数体}
方法的实现也包括两部分内容:方法声明和方法体。
1.2.1.1方法声明
方法声明中的限定词的含义:
static: 类方法,可通过类名直接调用
abstract: 抽象方法,没有方法体
final: 方法不能被重写
方法声明包括方法名、返回类型和外部参数。其中参数的类型可以是简单数据类型,也可以是复合数据类型。
方法体
方法体是对方法的实现,它包括局部变量的声明以及所有合法的Java指令。方法体中声明的局部变量的作用域在该方法内部。若局部变量与类的成员变量同名,则类的成员变量被隐藏。为了区别参数和类的成员变量,我们必须使用this。this用在一个方法中引用当前对象。
构造方法
构造方法是一个特殊的方法。Java 中的每个类都有构造方法,用来初始化该类的一个对象。
构造方法必须与类名相同。无返回类型。对象实例化时会被自动调用。一般是public。
重载经常用于构造方法。函数的重载:函数名相同,参数不同(数量,类型)。与返回类型无关. 调用重载了的函数的时,会跟据实参的情况自动寻找相应形参的函数,并调用。
构造方法只能由new运算符调用。当我们new一个对象的时候。
1.执行成员变量的定义。
2.构造函数的内容。
2、接口:
定义:
interface 接口名 [extends 父接口列表]{
final 类型 常量名=值;
public void 方法名(形参);
}
接口的实现
[abstract] class 类名 extends 父类(只能有一个) implements 接口列表{可以是多个,中间用“,“隔开。
}
接口定义的时候:
1.接口尽量的小,功能太复杂的接口是一种坏味道的接口。——接口分离原则。
2.接口定义的时候,接口名子,尽量是形容词,或者是描述性质的词。