类是JAVA中一个重要的概念,可以把类理解成一个对象的抽象,这个抽象的对象包含了变量(用来描述这个对象的属性)和方法(用来描述这个对象可以干什么),类中的各个成员之间可以相互调用(static修饰的成员不能访问没有static修饰的成员).
而每个类中又必须有一个或者多个构造方法,这个构造方法用来将这个抽象的对象实例化。
[修饰符] class 类名{
构造函数;
成员变量;
方法;
}
在类中的构造函数、成员变量和方法都可以是0个或者多个
类的修饰符可以使用public、final、abstract,或者没有修饰符,abstract修饰的类被成为抽象类
是指定义在类中的类
public class A{
int a;
int b;
public void c(){}
public class B{
......
}
}
内部类访问外部类的private属性或方法使用外部类.this.属性(方法)
来实现
内部类访问外部类的static属性或方法,可以直接使用类名.属性(方法)
在面向对象变成语言中,类才是一等公民,整个系统由一个又一个类组成,方法必须属于类或者对象
一旦将一个方法定义在某个类的类体内,如果这个方法使用static修饰,则这个方法属于这个类,否则,这个方法属于这个类的实例
注意:
如果声明方法时包含了形参声明,则调用方法时必须给这些形参指定参数值,调用方法时实际传给形参的参数值也被称为实参
传递多个形参的定义方法,但长度可变的形参只能处于形参列表的最后,一个方法中最多只能包含一个长度可变的形参,长度可变的形参本质是一个数组,因此调入一个包含长度可变形参的方法时,这个长度可变的形参既可以传入多个参数,也可以传入一个数组。例如
public static void test(int a,String...books){}
构造方法是类中的特殊存在,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。
构造方法有以下特点
一个方法体内调用它自身,被称为方法递归。方法递归包含了一种隐式循环,它会重复执行某段代码,但这种重复执行无须循环控制
多个方法,有相同的名字、不同的参数,便产生了重载(跟返回值无关)
编译器通过用各个方法给出的参数类型与特定方法调用所使用的值进行匹配来挑选出相应的方法。
例如
Person p = new Person()
Person p = new Person("张三",50)
编译器通过通过Person的参数来确定调用哪个构造方法
创建对象使用类名 方法名 = new 类的构造函数
例如
Person p = new Person()
Person p = new Person("张三",50)
其实上面的对象创建是由Person p1 = null
和 P1 = new Person
两部分组成的
Person p1 = null
部分称之为“声明对象”、P1 = new Person
部分称之为“给对象实例化”,现实编程中往往将两步合并
方法的重写存在于JAVA的继承中,子类继承了父类的方法之后往往需要对父类的方法做出修改,在子类中修改父类的方法被称为方法的重写
注意:
方法重写和方法重载的区别
重载 | 重写 | |
---|---|---|
单词 | Overloading | Overriding |
定义 | 方法名相同,参数列表不同 | 方法名、返回值、参数列表全部相同 |
权限 | 没有要求 | 重写的方法不能比父类的方法权限更严格 |
范围 | 同一类 | 继承 |
private < default < protected < public
private,私有,只可在当前类中访问
default,默认,可在包内访问
protected,保护,可在本包,本类和子类下使用
public,公开,可在整个工程下访问
上面说到,类的本身是一个抽象的对象,我们通过调用类中的构造函数来讲这个抽象的对象实例化,我们使用new关键字来调用这个类的构造函数,来创建这个类的实例。
创建对象之后,就可以使用这个独享了,可以方法这个对象的实例变量,可以调用这个对象的方法。
在面向对象的编程语言中,一切事务均可以看作是一个对象。