Java基础 day07

面向对象

  • (Object-Oriented Programming,OOP

  • 其本质就是以类的方式组织代码,以对象的形式组织(封装)数据。

  • 抽象

  • 三大特性:

    • 封装
    • 继承
    • 多态 同一类事物会有多种状态
  • 从认知论角度考虑是先有对象后有类。

  • 从代码运行角度考虑是先有类后有对象,类是对象的模板。

static 静态修饰符

public static void a(){
    b();//会报错
}
public void b(){
    
}

原因:a()方法被static修饰,所以是和类一起加载的,而b()方法是类实例化之后才存在,调用不存在的b()方法,所以报错。

  • 静态方法可以由(也可以被实例对象)直接调用,即类名.方法名();

  • 非静态方法,必须由该类创建的实例对象来调用。

值传递与引用传递

public class Demo{
    public static void main(String[] args){
    int a = 1;
    System.out.println(a);//1
    //值传递
    Demo.change(a);
    System.out.println(a);//1
    
} 

    //返回值为空
    public static void change(int a){
        a = 10;
    } 
}


public class Demo2{
    //引用传递:对象,本质还是值传递
    //对象 内存 ??
    public static void main(String[] args){
    	Student stu = new Student();
        System.out.println(stu.name);//NULL
        Demo2.change(stu);
        System.out.println(stu.name);//"飞人"
    } 
    
    public static void change(Student stu){
        //stu现在是个对象,指向的是具体的Student,可以改变属性!
        stu.name  = "飞人";
    }
}


public class Student{
    String name;//默认值NULL
}

类和对象的关系

  • 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但不能代表某一个具体的事物

    • 动物、植物、教师、学生...
    • 这些类都是用来描述/定义某一类具体事物应具备的特点和行为
  • 对象是抽象概念的具体实例

    • 张三是人的一个具体实例,张三家的旺财就是狗的一个具体实例
    • 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念

创建与初始化对象

  • 使用new关键字创建对象
  • 用new关键字创建时,除了分配内存空间外,还会给创建好的对象进行默认的初始化

以及对类中构造器调用

  • 类中的构造器也叫构造方法,就是调用的它进行对象的创建,且有两个特点
    • 必须和类的名字相同
    • 必须没有返回类型,也不能写void
  • 构造器必须要掌握