面向对象:把构成问题的实物划分为多个独立的对象。通过调用对象的方法来解决问题。一个应用程序会包含多个对象,多个对象的相互配合实现应用程序所需要的功能。
应用程序功能发生变动时,只需要修改个别对象。
面向对象的特点:封装、继承、多态。
封装:将对象的属性(成员变量)和行为封装起来。
继承:类与类之间的关系。无需重新编写原有类的情况,对原有类的功能进行拓展。
多态:一个类中定义的属性和功能被其他类继承之后,当把子类对象直接赋值给父类引用变量时,相同引用类型的变量调用同一个方法所呈现出来的多种不同行为特性。
重载:在一个程序中定义多个名称相同,但是参数类型不同的方法。方法的重载与返回值类型无关。需要:1.方法名相同;2.参数个数或参数类型不同。
[]为可选项
定义类:
[修饰符] class 类名 [extends 父类名] [implement 接口名]{
//类体,类的成员变量和成员方法
}
定义成员变量:
[修饰符] 数据类型 变量名 [=值];
定义成员方法:
[修饰符] [返回值类型] 方法名 ([参数类型 参数名1,参数类型 参数名2,....]){
//方法体
return 返回值; 当返回值类型为void时,retur语句可以省略
}
构造方法(构造器):类的一个特殊成员,在类实例化对象时被自动调用。
[修饰符] 方法名 {[参数列表]}{
//方法体
}
需要:
1.方法名与类名相同;
2.方法名前没有返回值类型的声明;
3。方法中不能使用return语句来放回值,但可以使用return来结束方法。
Java中每个类都至少有一个构造方法,系统自动为类创建的构造方法没有参数,其方法体中没有任何代码;一旦自行为类定义了构造方法,系统将不再提供默认的无参构造方法。
修饰符:
访问控制符(对访问权限进行限定):public(用public修饰的类的源文件名必须和类名相同)、protected、private、default
静态修饰符:static。
最终修饰符:final
创建对象:
类名 对象名称=new 类名();
声明一个类名的对象类型变量;new一个实例对象;将new出来的实例对象在内存中的地址赋值给变量,这样变量就持有了对象的引用。
在一个类中定义了有参的构造方法,最好再定义一个无参的构造方法。
为方便实例化对象,构造方法通常使用public来修饰。
this关键字:this指代当前对象,用于再方法中访问对象的其他成员。
1.this关键字调用成员变量,解决与局部变量名称冲突问题
class Person {
int age; //下面的this age 指这个age
public Person(int age){ //在构造方法中age是访问构造方法中的名age的变量,this.age访 问成员变量。
this.age=age;
}
}
2.this调用成员方法;
3.this调用构造方法。构造方法是在实例化对象时java自动调用的,在程序中不能像调用其他方法一样去调用构造方法,但可以在一个构造方法中使用this([参数1,参数2...])的形式来调用其他构造方法。注意:1.只能在构造方法中这样用,不能在成员方法中这样使用;2.this调用构造方法的语句必须是该方法的第一条执行语句,且只能出现一次。
java的内存分栈内存和堆内存:
栈内存:存放基本类型变量和对象的引用变量
堆内存:存放new创建的对象和数组
定义一个类只是在描述某类事物的特征和行为,并没有产生具体的数据
new创建类的实例对象后,系统才为每个对象分配内存空间,存储各自的数据。
有的数据可以被一个类的所有实例对象共享,就不必在每个实例对象所占用的内存空间中都声明一个变量。可以在对象以外的空间声明一个表示该数据的变量让所有对象共享。
静态变量:static关键字修饰的成员变量,可以被所有实例对象共享。
访问:类名.变量名
静态方法:要使用类中的成员方法,需要先将类实例化,想要不创建对象就可以调用某个方法,就可以使用静态方法,在类中定义的方法前加static关键字。
访问:类名.方法 / 实例对象名.方法
静态代码块
访问对象的成员:
1.对象引用
2.直接使用创建的对象本身(不用)