OOP类与对象&构造器

以类的方式组织代码,以对象的形式封装数据

小结:

1、类与对象:
        类是抽象的一个模版,对象是一个具体的实例

2、方法:

        定义、调用

3、对象的引用:
        引用类型:对象是通过引用来操做的,栈--->堆

        对应的是基本类型(8大基本类型int、byte、short、long、double、float、char、boolean)

4、对象的属性:字段filed/成员变量

        默认初始化:

                数字:0、0.0

                char:u0000

                boolean:false

                引用类型:null

属性定义:修饰符 属性类型 属性名 = 属性值

5、对象的创建和使用

        - 必须使用new 关键字来创建对象,必须有构造器  Person jianghanyi = new Person();

        - 对象的属性:jianghanyi.name()

        - 对象的方法:jianghanyi.sleep()

6、类:只能写👇

        静态的属性;

        动态的行为


一、类与对象的关系

类:

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

比如:Person类、Car类等,用来描述这一类事物应该具备的特点和行为

对象:

是抽象概念的具体实例

比如:张三是Person类的一个具体实例,张三的车是Car类的一个具体实例

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

类是抽象的,对象时具体的,类是对象的模版

二、创建与初始化对象

一个程序只有一个main方法,执行一个程序首先执行main方法,所以只用在main方法里调用自己写的方法就好了

使用new关键字创建对象:
使用new关键字创建的时候,除了分配内存空间外,如果你没有给创建的对象赋值,他还会自动给创建好的对象进行默认初始化(比如String类型默认null),以及对类中构造器的调用。

先创建一个Student类:

package com.Jiang.oop.demo02;

//学生类
public class Student {

    //属性:字段
    String name;//null
    int age;//0


    //方法
    public void study(){
        System.out.println(this.name+"学生在学习");
        //this代表当前这个类,意思是当前这个学生在学习
    }
    
}

在Application类中创建对象:

package com.Jiang.oop.demo02;

//一个项目应该只存在一个main方法
public class Application {
    public static void main(String[] args) {

        //类:抽象的,需要实例化——new
        //类实例化后会返回一个自己的对象
        //student对象就是Student类的一个具体实例
        Student student = new Student();
        Student xiaoming = new Student();
        Student jianghanyi = new Student();

        xiaoming.name = "小明";
        xiaoming.age = 4;

        System.out.println(xiaoming.name);//小明
        System.out.println(xiaoming.age);//4

        System.out.println(jianghanyi.name);//null
        System.out.println(jianghanyi.age);//0
    }
}

三、构造器

类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。

构造器有以下两个特点:

        1、必须和类的名字相同

        2、必须没有返回类型,也不能写void

package com.Jiang.oop.demo02;


public class Person {

    //一个类即使什么都不写,他也会存在一个方法
    //显示的定义构造器

    String name;
    int age;

    //实例化初始值
    //构造器作用:
    //1、使用new关键字,本质是在调用构造器
    //2、构造器用来初始化值
    public Person(){//无参构造
        this.name = "jiannghnyi";
    }

    //存在重载方法有参构造器时,重载方法名字的无参构造器必须要写出来!
    public Person(String name){//有参构造
    //this.name是指上面创建的属性,后面的name是指传进来的name,即这个方法里的
        this.name = name;
    }

    public Person(String name, int age) {//有参构造
        this.name = name;
        this.age = age;
    }

    /*
            //new 实例化了一个对象
        //有参数就走有参,无参数就走无参,出来的是定义的值
        Person person1 = new Person();//走无参的那个方法
        Person person = new Person("jianghnayi");
        Person person2 = new Person("jiang",19);//调用相应的构造器
        System.out.println(person1.name);//jianghnayi
        System.out.println(person.name);//jianghnayi
        System.out.println(person2.name);//jiang
        System.out.println(person2.age);//19


        构造器:
        1、因为构造器名字必须和类名相同,所以是重载
        2、没有返回值
        作用:
        1、new 本质是在调用构造方法
        2、初始化对象的值
        注意点:
        1、定义有参构造之后,如果想使用无参构造,无参构造器必须写出来

        command+N
       
     */


}

四、创建对象内存分析

创建一个Pet类:

package com.Jiang.oop.demo03;

public class Pet {
   public String name;
   public int age;

    //无参构造:不写方法的时候无参构造会自动存在,
    //写了有参构造后就会没有,所以要自己先写一个无参构造显示出来
    public void shout(){
        System.out.println("叫了一声");
    }

}

在Application中引用该类并创建对象

package com.Jiang.oop;

import com.Jiang.oop.demo03.Pet;

public class Application {

   public static void main(String[] args) {

       Pet dog = new Pet();
       dog.name="旺财";//赋值
       dog.age = 3;//赋值
       dog.shout();//叫了一声:引用方法

       Pet cat = new Pet();


       System.out.println(dog.name);
       System.out.println(dog.age);
   }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值