面向对象概念及构造器详解!

一给  金牌会员 | 2022-8-25 13:14:23 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 855|帖子 855|积分 2565

面向对象


  • 在学习面向对象之前我们先来看一下面向过程
面向过程思想


  • 面向过程的步骤清晰简单,第一步做什么,第二步做什么
  • 面向对象过程适合处理一些简单的问题
    面向对象的过程可以用把大象放进冰箱举例
    ​        面向对象的分析:
    ​        第一步:把冰箱门打开
    ​        第二步:把大象放进冰箱
    ​        第三步:把冰箱门关上
面向对象思想


  • 面向独享是用分类的思维模式,思考解决问题需要哪些分类,然后对这些分类进行单独的思考。最后,才对分类的某个细节进行面向过程的探索
  • 面向对象适合处理复杂的问题,适合处理需要多人协作的问题
    还是以把大象放进冰箱举例
    面向对象的分析过程:
    第一步:把动作的实体抽象出来,主体,有人,冰箱,大象
    第二步:定义主体,为主题添加对应的功能和属性
    ​                人,需要有打开,关闭冰箱的功能,以及放大象进冰箱的功能
    ​                冰箱,需要有开门,关门的属性
    ​                大象,需要有能放进入冰箱的功能
  • 面向对象的本质就是:以类的方式组织代码,以对象的组织(封装)数据
  • 抽象
  • 三大特性:封装
    ​                   继承
    ​                                   多态
创建与初始化对象

使用new关键字创建对象


  • 使用new关键字创建对象的时候,除了分配内存空间之外,还会给创建好的对象进行默认化的初始值以及对类中构造器的调用
代码示例:类中只能有属性和方法
  1. package com.oop.Demo02;
  2. //学生类
  3. public class Student {
  4.     //属性:字段
  5.     String name;
  6.     int age;
  7.     //方法
  8.     //this代表当前的类,用于本类的方法中使用本类的属性
  9.     public void study(){
  10.         System.out.println(this.name+"在学习");
  11.     }
  12. }
复制代码
我们在定义了类之后,要在main方法中去调用,这时候,我们就应该创建一个测试类,或者应用类,这个类用来调用这个项目中所有类的方法和属性,一个项目应该只存在一个main方法
eg:
  1. package com.oop.Demo02;
  2. //一个项目应该只存在一个main方法
  3. public class Test {
  4.     public static void main(String[] args) {
  5.         //类是抽象的,需要实例化,通过new来实例化
  6.         //类实例化后会返回自己的对象
  7.         //student对象就是一个Student类的具体实例
  8.         Student daughter=new Student();
  9.         daughter.name="阿尼亚";
  10.         daughter.age=5;
  11.         System.out.println(daughter.name);
  12.         System.out.println(daughter.age);
  13.     }
  14. }
复制代码
输出:
  1. 阿尼亚
  2. 5
复制代码

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

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

接下来我们看一下关于构造器
我们首先随便定义一个动物类Animal
Animal.java:
  1. public class Animal {
  2.    
  3. }
复制代码
然后在测试中实例化这个类,运行一下看
Application.java:
  1. public class Application {
  2.     public static void main(String[] args) {
  3.         //new 实例化了一个对象
  4.         Animal animal=new Animal();
  5.     }
  6. }
复制代码
可以看出我们在上面的Animal类中是什么都没写的,然而实例化看一下class文件可以看出
Animal.class:
  1. package com.oop.Demo02;
  2. public class Animal {
  3.     public Animal() {
  4.     }
  5. }
复制代码
可以看出在class中已经生成了一个class文件
一个类中即使什么都不写,也会存在一个方法
而我们看一下无参构造和有参构造
上述,自动生成的方法就是一个无参构造方法,我们自己写一下看,
无参构造:
  1. public class Animal {
  2.     //属性 name
  3.     String name;
  4.     //无参构造
  5.     public Animal() {
  6.     }
  7. }
复制代码
调用一下无参构造的方法:
  1. public class Application {
  2.     public static void main(String[] args) {
  3.         //new 实例化了一个对象
  4.         Animal animal=new Animal();
  5.         animal.name="bangde";
  6.         System.out.println(animal.name);
  7.     }
  8. }
复制代码
输出:
  1. bangde
复制代码
即使我们不加这个无参构造,输出也能得到自己想要的,因为上文说过编译器会自动生成一个午餐的构造方法。
有参构造:
  1. public class Animal {
  2.     //属性 name
  3.     String name;
  4.     //有参构造
  5.     public Animal(String name) {
  6.         this.name = name;
  7.     }
  8. }
复制代码
加有参构造之后,我们可以看到,刚才实例化的对象,已经开始报错了!
插入图片:

那是因为,我们创建了有参构造方法之后,编译器便不会为我们生成无参的构造方法了,这时如果我们还想要有无参的构造方法,需要自己再写一个无参的构造方法!
  1. public class Animal {
  2.     //属性 name
  3.     String name;
  4. //    无参构造
  5.     public Animal() {
  6.     }
  7.     public Animal(String name) {
  8.         this.name = name;
  9.     }
  10. }
复制代码
这是程序可以正常运行,那如果我们想调用无参的构造方法,只需,给方法传入对应的参数即可!
  1. public class Application {
  2.     public static void main(String[] args) {
  3.         //new 实例化了一个对象
  4.         Animal animal=new Animal();
  5.         animal.name="邦德";
  6.         System.out.println(animal.name);
  7.         Animal animal2=new Animal("汪汪");
  8.         System.out.println(animal2.name);
  9.     }
  10. }
复制代码
当然,我们再idea中,也是有快捷键去生成有参和无参的构造方法的快捷键的。
当在类中定义过属性之后
只需,按住ALT+INSERT键,点击Constructor,然后选中想要创建有参构造方法的属性即可生成有参的构造方法,如果方法中想包含多个属性,按住ctrl键,然后点击多个即可!


如果想生成无参的构造方法,点击过Construcor之后点击select None即可
插入图片:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表