Java入门(一)---面向对象

二狗子.jpeg

面向对象:

关注现实存在的事物的各个方面的信息,从对象的角度出发,根据事物的特征进行程序设计。

类,是抽象的概念,可以理解为一个模型,用来确定对象将会拥有的特征(属性)和行为(方法)
对象,是类的实例表现形式,一个实体。

  • 类的属性:对象具有的各种静态特征 (对象有什么)
  • 类的方法:对象具有的各种动态行为 (对象能做什么)

实例化

定义一个Dog类,有两个属性nameage,还有两个方法,run()eat()
新建文件Dog.java

public class Dog {
    //成员属性:name age
    String name;
    int age;
    //成员方法: run  eat
    public void run(){
        System.out.println("跑");
    }
    public void eat(){
        System.out.println("吃");
    }
}

接着,再定义一个用来测试的类, TestDog.java

1 public class TestDog {
2    public static void main(String[] args){
3        Dog dog = new Dog();
4        dog.name = "灰灰";
5        dog.age = 2;
6        System.out.println(dog.name);
7        System.out.println(dog.age);
8        dog.eat();
9        dog.run();
    }
}

下边来看下TestDog.java做了些什么:
第一行第二行的基础部分这里不再赘述,直接看第三行,实例化对象 Dog dog = new Dog();
实例化对象的过程可以分为两部分:

  • 声明对象 Dog dog :在内存的栈空间开辟一块空间, 此时对象是空的, 无法使用
  • 实例化对象 new Dog() : 在内存的堆空间开辟一块空间,完成具体对象初始化操作

image.png

通过赋值操作,把堆空间的内存地址存放到了dog中:
Dog dog = new Dog();
关于对象的实例化操作,是通过new + 构造方法的形式来完成的。

构造方法

构造方法也称为构造函数、构造器:
1.构造方法与类同名且没有返回值
2.只能在对象实例化的时候调用(配合 new调用)
3.当没有指定构造方法时,系统会自动添加无参的构造方法
4.当指定了构造方法,无论有参数还是无参数的构造方法,都不会自动添加无参数的构造方法
5.一个类中可以有多个构造方法,---构造方法重载,java会根据参数去自动选择。

上边的Dog.java没有定义构造方法,在调用时系统自动帮我们添加无参数的构造方法,下边我们添加上有参数的构造方法:

public class Dog {
    String name;
    int age;
    
    //带参数的构造方法
    public Dog(String name, int age){

    }

    public void run(){
        System.out.println("跑");
    }
    public void eat(){
        System.out.println("吃");
    }
}

当我们使用带参数的构造函数来进行初始化的时候,为了避免产生赋值错误的情况,可以使用this关键字

this关键字

this代表当前对象的默认引用,上述代码,dog就是当前对象
更改Dog.java

public class Dog {
    String name;
    int age;

    //带参数的构造方法
    public Dog(String name, int age){
        //把传入的 name 赋值给局部变量 name
        this.name = name;
        //把传入的 age 赋值给局部变量 age
        this.age = age;
    }

    public void run(){
        //调用成员方法eat,(这里只是演示this的使用 不关心逻辑)
        this.eat();
        System.out.println("跑");
    }
    public void eat(){
        //也可以不用this 直接调用成员方法run
        run();
        System.out.println("吃");
    }
}

补充知识

我们在类中定义变量后,其实变量是有初始值的,代码说明:
新建Demo.javaTestDemo.java

public class Demo {
    String name;
    int age;
    double d;
    boolean n;
}
public class TestDemo {
    public static void main(String[] args){
        Demo de = new Demo();
        System.out.println(de.name);
        System.out.println(de.age);
        System.out.println(de.d);
        System.out.println(de.n);
    }
}
运行结果:
null
0
0.0
false

上边Demo.java中定义了四个不同类型的变量,直接在TestDemo.java中调用并打印,可看到变量的默认值。

下图展示了变量定以后的初始值:


image.png

你可能感兴趣的:(Java入门(一)---面向对象)