面向对象: 类与对象的关系

类与对象的关系

类与对象的关系

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

  • 动物、植物、手机、电脑
  • Person类、Pet类、Car这些类都是用来描述、定义了某一类具体的事物应该具备的特点和行为

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

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

创建于初始化对象

类于对象的创建

​ 使用new关键字创建对象

  • 使用new关键字创建的时候,除了分配内存空间以外,

    还会给 创建好的对象 进行默认初始化 以及对类中构造器的调用

//学生类
public class Student {

    //属性:字段
    String name; //姓名
    int age;     //年龄

    //方法
    public void study() {
        System.out.println("学生 在学习");

        //可是学生不止一个,是会有变化的。所以我们用下面这种方法:
        System.out.println(this.name + "在学习");//this 代表当前这个类
    }
}

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

        //类: 抽象的, 实例化
        Student student = new Student();

        /*实例化后会返回一个自己的对象
        student对象就是一个Student类的具体实例!*/

        //不理解? 再看
        Student xiaoming = new Student();
        Student xiaohong = new Student();
        //这是两个不一样的对象(小明,小红),但都具有name、age这两个属性以及study方法,因为都是Student类(同一个类可以产生不同的对象)

        System.out.println(xiaoming.name);
        System.out.println(xiaoming.age);
        
        //输出结果为:
        null
        0
		//因为name没有赋值,String的默认初始化就是null,int的默认初始化就是0
            
    }
}

//重新看一下
public class Application {
    public static void main(String[] args) {

        //创建两个学生对象
        Student xiaoming = new Student();
        Student xiaohong = new Student();

        //给小明这个学生赋值
        xiaoming.name = "小明";
        xiaoming.age = 8;

        //输出小明的信息
        System.out.println(xiaoming.name);
        System.out.println(xiaoming.age);

        //给小红这个学生赋值
        xiaohong.name="小红";
        xiaohong.age=10;
        
 		//输出小红的信息
        System.out.println(xiaohong.name);
        System.out.println(xiaohong.age);
       
        //输出结果为
        小明
		8
		小红
		10
    }
}

//以上代码都需要跟这写一遍,实践出真知
构造器详解
//打开输出目录(看下方截图)
public class Person {

}

打开输出目录

在这里插入图片描述

在Modules中加上根目录

在这里插入图片描述

现在可以看见out目录,这就是输出目录,会生成Class

在这里插入图片描述

查看对比:可见右边Class文件默认的加了一个方法,而且这个方法没有返回值,方法名和类名相同,其实这就是一个构造器

在这里插入图片描述

由此可得出一个结论:

”一个类即使什么也不写,它也会存在一个方法,这个方法就是构造方法“

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

    并且构造器有以下两特点:

    • 必须和类的名字相同
    • 必须没有返回值,也不能写void
public class Person {

    //显示一个构造器
    public  Person(){

    }
}
  • 这就是一个构造器,无参构造

  • 无参构造能干什么?

    • 可以给我们初始化一些信息
    public class Application {
        public static void main(String[] args) {
            
    		//使用 new 关键词 实例化一个对象
    	    Person person = new Person();
    
            System.out.println(person.name);//不负任何值的情况下,默认值是null(这时候构造器就可以派上用场)
         }
    }
    
    public class Person {
    
         String name;
    
        //构造器的第一个作用就是实例化一些对象
        
        //实例化初始值
        //无参构造器
        public Person() {
            this.name = "玫玫";
        }
        
    }
    
    //输出结果为
    玫玫
    
    	//有参构造器:一旦定义了有参构造,无参就必须显示定义(否则就无效了)
    	public Person(String name) {
            	this.name = "玫玫";
        }
    

构造器核心的作用就两个

  • 1、使用 new 关键字的时候,本质是在调用构造器
  • 2、构造器一般用来初始化值

构造器必须要掌握

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值