JAVA构造方法/构造器以及this使用方式

 更新时间:2024年03月27日 08:58:23   作者:chuanzhangsss  
这篇文章主要介绍了JAVA构造方法/构造器以及this使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

构造方法/构造器

基本语法

·[修饰符]方法名(形参列表){
方法体;
}

1.构造器的修饰符可以默认,也可以是public protected private

2.构造器没有返回值

3.方法名和类名字必须一样

4.参数列表和成员方法一样的规则

5.构造器的调用系统完成

基本介绍

1.方法名和类名相同

2.没有返回值

3.在创建对象时,系统会自动调用该类的构造器完成对象的初始化

4.构造器是完成对象的初始化,并不是创建对象

5.在创建对象时,系统自动的调用该类的构造方法

 
public class Main{
    public static void main(String[] srgs){
        Person p1 = new Person("king",40);
        Person p2 = new Person("tom");
    }
}
//第一个构造器
class Person{
public Person(String pName;int pAge){
    name = pName;
    Age = pAge;
}
//第二个构造器,只指定姓名,不指定年龄
public Person(String pName){
    name = pName;
}
}

6.如果没有定义构造器,系统会自动生成一个默认的无参构造器(也叫默认构造器)比如Dog(){ },使用javap指令反编译看看

7.一旦定义了自己的构造器,默认的构造器就覆盖了,就不能再使用默认的无参构造器,除非显示的定义一下,即:Person(){ }

 
public class Main{
    public static void main(String[] srgs){
        Dog d = new Dog();
    }
}
class Dog{
    /**如果没有定义构造器,系统会自动生成一个默认的无参构造器(也叫默认构造器)比如Dog(){ },使用javap指令反编译看看 // javap Dog.class
    默认构造器
    Dog(){
    }
    */
    //一旦定义了自己的构造器,默认的构造器就覆盖了,就不能再使用默认的无参构造器,除非显示的定义一下,即:Person(){ }
    public Dog(String pName){ 
    ...... 
    }
    
}

this

 
public class Main{
    public static void main(String[] srgs){
        Dog d = new Dog("大壮",10);
        d1.info();
    }
}
class Dog{ // 类
    String nmae;
    int ang;
    public dog(String dName,int dAge){
        name = dName;
        age = dAge;
    }
    //如果我们的构造器的形参,能够直接写成属性名,就更好
    public void info(){//成员方法,输出属性+信息
        System.out.println(name + "\t" + age + "\t");
    }
}

问题:

构造方法的输入参数名不是非常的好,如果能够将dName改成name就好了,

但是我们会发现按照变量的作用域原则,name的值就是null,怎么解决

引出->this

 
public class Main{
    public static void main(String[] srgs){
         Dog d = new Dog("大壮",10);
        d1.info();
    }
}
class Dog{ // 类
    String nmae;
    int ang;
    //构造器的name和age是局部变量不是属性
    public dog(String name,int age){
        //this.name就是当前对象属性nmae
       this.name = name;
        //this.age就是当前对象属性age
        this.age = age;
    }
    public void info(){//成员方法,输出属性+信息
        System.out.println(name + "\t" + age + "\t");
    }
}

this的注意事项和使用细节

1.this关键字可以用来访问本类的属性、方法、构造器

2. this用于区分当前类的属性和局部变量

3. 访问成员方法的语法:this.方法名(参数列表);

4. 访问构造器语法:this(参数列表);注意只能在构造器中使用

5. this不能在类定义的外部使用,只能在类定义的方法中使用。

 
public class Main{
    public static void main(String[] srgs){
       T t = new T(); 
        t.f2(); 
    }
}
class T{
    /*
    注意:访问构造器语法:this(参数列表);
    必须放置第一条语句
    */
    public T(){
        //这里去访问T(String name,int age)构造器
        this("jack",1000);
        System.out.println("T()构造器");
    }
    public T(String name,int age){
        System.out.println("T(String name,int age)构造器");
    }
    public void f1(){
         System.out.println("f1()方法..");
    }
     public void f2(){
         System.out.println("f2()方法..");
         //调用本类的 f1
         //第一种方法
         f1();
         //第二种方法
         this.f1();
    }
}

例题

定义Person类,里面有name、age属性,并提供compareTo比较方法,用于判断·是否和另一个人相等,提供测试类Main用于测试,名字和年龄完全一样,就返回true,否则返回false

 
public class Main{
    public static void main(String[] srgs){
      Person p = new Person("mary",20);
         Person p = new Person("smith",30);
         System.out.println(p1.compareTo(p2));
    }
}
class Person{
    String name;
    int age;
    //构造器
    public Person(String name,int age){
        this.name = name;
        this.age = age;
    }
    //compareTo方法
    public Boolean compareTo(Person p){
        if(this.name.equals(p.name)&&this.age == p.age){
            return true;
        }else{
            return false;
        }
    }
}//结果返回flase 
 
 
 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot实现国密通信的流程步骤

    SpringBoot实现国密通信的流程步骤

    这篇文章主要介绍了SpringBoot实现国密通信的流程步骤,我们需要完成以下步骤:生成支持国密的证书,配置两个 Spring Boot 项目,使用国密证书实现 HTTPS和验证通信是否成功,通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-11-11
  • 一次因HashSet引起的并发问题详解

    一次因HashSet引起的并发问题详解

    这篇文章主要给大家介绍了一次因HashSet引起的并发问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • java swing GUI窗口美化方式

    java swing GUI窗口美化方式

    这篇文章主要介绍了java swing GUI窗口美化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Java的JSON转换库GSON的基本使用方法示例

    Java的JSON转换库GSON的基本使用方法示例

    GSON是Google制作的一个可以让Java对象与JSON互相转换的类库,下面我们就来看一下Java的JSON转换库GSON的基本使用方法示例:
    2016-06-06
  • Java日常练习题,每天进步一点点(58)

    Java日常练习题,每天进步一点点(58)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-08-08
  • 深入理解springboot中配置文件application.properties

    深入理解springboot中配置文件application.properties

    本文主要介绍了springboot中配置文件application.properties,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Spring框架之IOC介绍讲解

    Spring框架之IOC介绍讲解

    IOC-Inversion of Control,即控制反转。它不是什么技术,而是一种设计思想。这篇文章将为大家介绍一下Spring控制反转IOC的原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Java使用建造者模式实现办理手机套餐功能详解

    Java使用建造者模式实现办理手机套餐功能详解

    这篇文章主要介绍了Java使用建造者模式实现办理手机套餐功能,较为详细的描述了建造者模式的概念、原理并结合实例形式分析了Java使用建造者模式实现的办理手机套餐功能具体步骤与相关操作注意事项,需要的朋友可以参考下
    2018-05-05
  • Spring框架事务属性中事务隔离级别与传播行为全面讲解

    Spring框架事务属性中事务隔离级别与传播行为全面讲解

    这篇文章主要介绍了Spring框架声明式事务的事务隔离级别和事务传播行为,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-11-11
  • Java连接Hbase的项目实践

    Java连接Hbase的项目实践

    HBase是基于Hadoop的高可靠、高性能、面向列的NoSQL数据库,它提供了对海量数据的存储和实时读写的能力,本文主要介绍了Java连接Hbase的项目实践,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01

最新评论