第一阶段 javaSE 面向对象01

什么是面向对象

面向过程&面向对象

  • 面向过程思想:

    步骤清晰简单,第一步做什么,第二步做什么

    面向过程适合处理一些较为简单的问题

  • 面向对象思想

    物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,人后对这些分类进行单独思考,最后,才对某个分类下的细节进行面向过程的思索

    面向对象适合处理复杂的问题,适合处理多人协作的问题

  • 对于描述复杂的事务,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统,但是,具体到微观操作,仍然需要面向过程的思路去处理

什么是面向对象编程

  • 面向对象编程(Object-Oriented Programming ,OOP)

    面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据

  • 抽象

  • 三大特性:封装 继承 多态

  • 从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象

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

回顾方法的调用

方法的定义

修饰符

返回类型

break和return的区别:break表示跳出switch和结束循环,return表示结束方法,返回具体的值或者空值

方法名:(见名之意,小驼峰命名法)

参数列表:(参数类型,参数名,不定项参数)

异常抛出

方法的调用:递归

静态方法(用static修饰)

非静态方法(不用static修饰)

  • 静态方法和非静态方法的区别:静态方法在其它类中可用 类名.方法名调用,非静态方法只能通过实例化进行调用,两者时间片不同,静态方法随着类的创建出现,非静态方法随着实例的创建而出现,所以在静态方法中不可以直接调用非静态方法,需要实例化,非静态方法之间可以直接相互调用

形参和实参

值传递和引用传递

值传递:

public static void main(String[] args) {
    int a=1;
    System.out.println(a); //a=1
    change(a);
    System.out.println(a); //a=1
    
}
public static void change(int a){
    a=10; //a=10
}

引用传递:本质还是值传递

 public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name); //null
        change(person);
        System.out.println(person.name); //菜鸟

    }
    public static void change(Person person){
      person.name = "菜鸟";
    }

}
class Person{
    String name; //null
}

this关键字

类与对象的创建

类与对象的关系

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

    Person类,Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特定和行为

  • 对象是抽象概念的具体实例

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

一个项目应该只存一个main方法,即一个启动类

public class Student {
    String name;
    int age;
    
    public void study(){
        //this表示当前类,可以调用当前类的属性和方法
        System.out.println(this.name+"在学习");
    }
}

创建和初始化对象

  • 使用new关键字创建对象
public static void main(String[] args) {
    //类是抽象的,需要进行实例化
    //类实例化后会返回一个自己的对象
    //xm对象就是一个Student类的具体实例
    Student xm = new Student();
    xm.age = 14;
    
    System.out.println(xm.name);//null
    System.out.println(xm.age);//14
}
  • 使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象,进行默认的初始化以及对类中构造器的调用

  • 类中的构造器也成为构造方法,实在进行创建对象的时候必须要调用的,并且构造器有以下两个特点:

    1. 必须和类的名字相同
    2. 必须没有返回类型,也不能些void

    构造器必须要掌握

public class Person {
    //一个类即使什么都不屑,它也会存在一个方法,显示的定义构造器
    String name;
    //无参构造
    public Person() {
    }
    //有参构造:通过构造方法传参,给实例化对象的属性传值
    public Person(String name){
        this.name = name; //当前类的name属性=参数值
    }
}

构造器总结

构造器:

  1. 和类名相同
  2. 没有返回值

作用:

  1. new (实例化一个对象) 本质实在调用构造方法
  2. 初始化对象的值

注意点:

定义有参构造之后,如果想使用无参构造,显示的定义一个无参构造

快捷键 :Alt + Insert 点击construct ,插入构造方法

创建对象内存分析

在堆中有一个方法区,方法区中有静态方法区,类创建的时候(包括驱动类和普通的抽象类)在方法区进行加载,静态方法随着类一起初始化,在静态方法区中加载

实例化对象的时候,main方法在栈中加载,在栈中保存了引用变量名,不同对象的引用变量名不同,分别指向堆中开辟的不同的内存空间,相应的内存空间中包含不同对象各自的属性和方法

简单小结类与对象

  1. 类与对象

    类是一个模板,是抽象的,对象是一个具体的实例

  2. 方法:掌握方法的定义与调用

  3. 对象的引用

    引用类型:除了8大基本类型,其余都是引用类型,引用类型是指对象都是通过引用来操作的,即栈中的引用变量指向堆中保存对象的内存空间

  4. 属性:字段 field 成员变量

    默认初始化:

    数字:0 0.0 char : u0000 boolean : false

    引用:null

赋值公式:修饰符 属性类型 属性名 = 属性值;

  1. 对象的创建和使用

    必须使用new关键字 构造器来创建对象

    -对象属性的调用和赋值

    -对象方法的调用

  2. 包括静态的属性和动态的方法

posted @ 2022-05-16 09:42  封闭货车  阅读(13)  评论(0)    收藏  举报