JAVA学习笔记09-面向对象、方法的复习、对象的创建

面向对象

面向过程的思想适用于一些简单的问题,比如“我要去上学”,那么处理这种问题我们直接用过程描述就可以了。但是随着问题越来越复杂,简单的用面向过程的思维来编程处理问题就有点力不从心了。
这个时候我们就需要用到面向对象的思维,比如“修一栋房子”,用面向过程的思想那么我要先打地基、然后架钢筋、铺水泥...等等,用面向对象的思维可以将问题分类,对这些问题独立思考,造房子可以分为设计部、工程部、水泥工、木工...其实面向对象的思维方式也符合对我们日常生活的思维的抽象。
对Java语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继承过来的。对象之间通过相互作用传递信息,实现程序开发。

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

面向对象三大特性

  • 封装
    封装是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。封装的目的在于保护信息。具体的数据和方法我们都是保存在类和对象当中的,只留下接口供外部调用,这就像U盘里面的数据不论如何改变,只要USB接口标准,那么就不会影响用户的使用。

  • 继承
    如同生活中的子女继承父母拥有的所有财产,程序中的继承性是指子类拥有父类的全部特征和行为,这是类之间的一种关系。Java只支持单继承。C++是支持多继承的,但是多继承有时会引起混乱。

  • 多态
    面向对象的多态性,即“一个接口,多个方法”。多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。多态性允许一个接口被多个同类使用,弥补了单继承的不足。

方法的复习

静态方法

static关键字修饰的方法就称为静态方法。静态方法是和类一起加载的,类出现的时候就有了静态方法。

  • 静态方法是属于类的,调用的方式是通过:
类名.方法名()

  • 静态方法是不能访问非静态成员的:

    如果我们将nAge成员加上static修饰,静态方法就可以调用了:

非静态方法

没有被static修饰的方法,也叫做实例方法。实例方法是类实例化之后才存在。

  • 实例方法属于对象,调用方式是:
实例化对象.方法()

  • 实例方法可以直接访问静态成员

值传递与引用传递

我们的JAVA都是值传递,比如以下的代码是不能改变变量本身的值的:

public class Demo1 {
    public static void main(String[] args)
    {
       int a = 1;
       Demo1.numChange(a);

       System.out.println(a);
    }
    public static void numChange(int a){
        a= 100;
    }

}

以上代码运行后,我们的变量a的大小仍然是1。

//引用传递,操作对象,实质上仍然是值传递
public class Demo1 {
    public static void main(String[] args)
    {
       Person person1 = new Person();
       System.out.println(person1.name);

       Demo1.change(person1);
       System.out.println(person1.name);
    }

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

class Person{
    String name;
}

以上代码运行后结果如下:

因为我们操作的是一个实例化的对象。

创建与初始化对象

  • 使用new关键字创建对象:
类名 对象名 = new 类名()

在使用new关键字创建对象的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。

构造器

构造方法是类的一种特殊方法,用来初始化类的一个新的对象,在创建对象(new 运算符)之后自动调用。Java 中的每个类都有一个默认的构造方法,并且可以有一个以上的构造方法。
比如我们直接实例化一个Demo5类,Demo5中是没有任何其他代码,但是程序运行是不会报错的,这就说明实际上Java在我们实例化对象前对类做了一些初始化操作,这就是构造函数。

我们去观察Demo5生成的class文件,可以发现它自己生成了一个和类名一致的方法,这就是构造方法:

这就说明,一个类就算什么都不写,那么它也会存在一个方法,我们在使用new关键字实例化一个对象的时候,其实本质就是在调用构造器。
构造函数分为无参构造和有参构造:

  • 无参构造
public class Demo5 {
    //显式地定义一个构造
    public Demo5(){

    }
}
  • 有参构造
    构造函数可以用来初始化一些值,那么这个时候就需要有参构造:
public class Demo5 {
    
    String Sname;
    
    //显式地定义一个构造
    public Demo5(){
    }
    
    //有参构造
    public Demo5(String name) {
        this.Sname = name;
    }
    
}

注意:如果定义了有参构造,那么无参构造就必须显式地定义:

IDEA的alt + insert

IDEA中的ALT+INSERT可以帮助我们生成构造函数:

posted @ 2022-01-16 23:54  男人的浪漫  阅读(98)  评论(0)    收藏  举报