面向对象是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.方法重载

  各方法的方法名相同

  参数不相同

    参数的个数不相同

    参数的位置不相同

    参数的类型不相同

  和返回值和修饰符无关

  根据传递的实参来确定调用哪一个