面向对象是Java编程中最重要且抽象的编程思想。它主要有三大特性:封装性、继承性和多态性。
1.类与对象
Java编程的第一步便是对创建一个类文件,将事务本身具有的属性和特征,行为等归纳起来,放入到类文件中
类是对事物的一个抽象的描述,是一个概念,类中可以放属性和方法 ①特征:属性 属性又称为变量: 成员变量:定义在类中的变量称为成员变量
成员属性实在堆内存中保存的,所以虚拟机会默认提供初值 局部变量:定义在方法中或者方法的参数列表里的变量属于成员变量
局部变量是在栈内存中保存的,虚拟机没有默认给它提供初值,需要定义的时候自己赋初值
局部变量也不可以使用访问修饰符
平级的两个代码块中,其作用域是互补干扰的;该代码块当中定义的变量,当代码块执行完毕,即立即被回收
局部变量的引用优先级高于成员变量
②行为:方法
方法:
调用者不关心调用的方法内是如何实现的
同一个类当中的方法,互相调用时,可以直接调用
不是同一个类当中,必须通过对象来进行调用
返回值
Void:代表没有返回值
返回值类型:
基本数据类型
引用数据类型
有返回值的情况下,需要有关键字return
只要不是void返回值,那么就必须要有return关键字
同一个方法内,return只能被执行一次,但并非只能有一个return,return后的内容将无法被执行
中断方法体的继续执行
没有方法返回值的情况下依然可以使用return;这个时候的return只有中断方法的功能,没有返回值的功能。方法中,可以有,也可以没有。
参数:
形参列表:作用是声明,提示需要的具体参数,调用者使用该方法必须传对应的参数才行
实参列表:传值,调用具体方法的时候传入的参数列表
形参和实参的个数、参数对应位置、参数对应的类型都必须保持一致
定长参数:定义几个参数就是几个参数
不定长参数:
个数不限(0到n之间),当作数组来使用
一般用在形参列表用,一个形参列表中,只能存在一个不定长参数,且只能放在整个形参列表的最后。
地址传递:
引用数据类型:无论在项目当中如何传递内存地址,只要是同一个对象,那么一个地方修改了,另一个地方一定也会改变;区别只是修改的顺序问题
基本数据类型:只是值传递
package org.example; /* * 定义一个类 */ class People { //不定长参数定义 void speak(int...args){ for(int i=0;i<args.length;i++){ System.out.println("大家好,我今年"+args[i]+"岁了!"); } } public static void main(String[] args) { //对象创建格式:类名 对象名 = new 类名(); People people = new People();//创建具体的对象 people.speak(5,7,9);//实参列表传值 } }
2.类的实例化
在编码的过程中,给类赋予具体事物的含义,它就被抽象的理解为是一个对象。一个具体的实体。
类的实例化就是创建具体的对象,格式如下:
类名 对象名 = new 类名();
package org.example; /* * 定义一个类 */ class People { //定义人相关的属性年龄 int age = 18; //定义方法 void speak(){ System.out.println("大家好,我今年"+age+"岁了!"); } public static void main(String[] args) { //对象创建格式:类名 对象名 = new 类名(); People people = new People();//创建具体的对象 people.speak(); } }
People people = new People();
等号左边为定义People类型的变量people,等号右边是实例化一个具体的对象出来,等号的作用是将右边的对象赋值给左边的变量。
3.构造方法
创建对象是一个事物从无到有的过程;那么体现这个从无到有这个过程的行为就叫构造方法!
从狭义上理解,创建对象的过程,就是调用了构造方法
构造方法的特点:
没有返回值
构造方法名必须和类名一样
构造方法可以有参数
默认情况下,所有的类创建时,虚拟机都会为其添加一个无参的构造方法
当显示的创建了构造方法后,虚拟机则不会再添加无参的构造
4.方法重载
各方法的方法名相同
参数不相同
参数的个数不相同
参数的位置不相同
参数的类型不相同
和返回值和修饰符无关
根据传递的实参来确定调用哪一个