Java面向对象基础3——构造方法及this关键字

简介: Java面向对象基础3——构造方法及this关键字

前言


面向对象编程中,学会构造方法能使得代码更加简洁,本文将具体介绍有关构造方法及其相关的知识点


this关键字


定义


this关键字的用处是调用成员变量中的值,而不是通过就近原则调用方法里的值


作用


区别成员变量和局部变量


代码实现


用IDEA来实现一下


7cc4819b8b2647cdab922b4e1453993e.png


具体代码如下


package test5;
public class Person1 {
    private int age;
    public void method(){
        int age = 18;
        System.out.println(this.age);
        System.out.println(age);
    }
}
package test5;
import test3.Person;
public class Person1Test {
    public static void main(String[] args) {
        Person1 p = new Person1();
        p.method();
    }
}


可以看出 this.age 调用的是成员变量中的值,由于没有赋值,所以是默认值0.


构造方法


格式


public class 类名{
  修饰符 类名(参数){
    方法体;
  }
}


构造方法也分为:空参构造和带参构造


特点


1.方法名与类名完全相同,大小写要一致

2.无返回值(return),也不需要void

3.一般用 public 声明变量

4.每个类至少有一个构造方法

5.构造方法可以重载


注意事项


1.如果没有定义构造方法,系统会给一个默认的无参数构造方法

2.如果定义了构造方法,系统不会提供默认构造方法

3.带参构造和空参构造是构造方法的重载

4.最好将带参构造和空参构造全部写上,防止出bug


代码实现


package test5;
public class Student {
    //定义成员变量
    private String name;
    private String gender;
    private int age;
    //空参构造
    public Student(){
    }
    //带参构造
    public Student(String name, String gender, int age){
        this.name = name;
        this.gender = gender;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
package test5;
public class StudentTest {
    public static void main(String[] args) {
        Student s = new Student("张三","男",18);
        System.out.println(s.getName());
        System.out.println(s.getGender());
        System.out.println(s.getAge());
    }
}

1ac316570d454a778609b59c53edda0c.png


结语


构造方法是很重要的知识点,在下一篇中会介绍剩余的知识点

相关文章
|
19天前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
Java 并发编程——volatile 关键字解析
|
2天前
|
JSON Java 数据挖掘
利用 Java 代码获取淘宝关键字 API 接口
在数字化商业时代,精准把握市场动态与消费者需求是企业成功的关键。淘宝作为中国最大的电商平台之一,其海量数据中蕴含丰富的商业洞察。本文介绍如何通过Java代码高效、合规地获取淘宝关键字API接口数据,帮助商家优化产品布局、制定营销策略。主要内容包括: 1. **淘宝关键字API的价值**:洞察用户需求、优化产品标题与详情、制定营销策略。 2. **获取API接口的步骤**:注册账号、申请权限、搭建Java开发环境、编写调用代码、解析响应数据。 3. **注意事项**:遵守法律法规与平台规则,处理API调用限制。 通过这些步骤,商家可以在激烈的市场竞争中脱颖而出。
|
19天前
|
缓存 安全 Java
Java volatile关键字:你真的懂了吗?
`volatile` 是 Java 中的轻量级同步机制,主要用于保证多线程环境下共享变量的可见性和防止指令重排。它确保一个线程对 `volatile` 变量的修改能立即被其他线程看到,但不能保证原子性。典型应用场景包括状态标记、双重检查锁定和安全发布对象等。`volatile` 适用于布尔型、字节型等简单类型及引用类型,不适用于 `long` 和 `double` 类型。与 `synchronized` 不同,`volatile` 不提供互斥性,因此在需要互斥的场景下不能替代 `synchronized`。
2127 3
|
1月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
26 1
|
2月前
|
JavaScript 前端开发 Java
java中的this关键字
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。自学前端2年半,正向全栈进发。若我的文章对你有帮助,欢迎关注,持续更新中!🎉🎉🎉
58 9
|
2月前
|
设计模式 JavaScript 前端开发
java中的static关键字
欢迎来到瑞雨溪的博客,博主是一名热爱JavaScript和Vue的大一学生,致力于全栈开发。如果你从我的文章中受益,欢迎关注我,将持续分享更多优质内容。你的支持是我前进的动力!🎉🎉🎉
57 8
|
2月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
28 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
2月前
|
Java 开发者
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
51 4
|
2月前
|
Java
在Java中定义一个不做事且没有参数的构造方法的作用
Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用super()来调用父类中特定的构造方法,则编译时将发生错误,因为Java程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。
|
7月前
|
缓存 安全 Java
《volatile使用与学习总结:》多层面分析学习java关键字--volatile
《volatile使用与学习总结:》多层面分析学习java关键字--volatile
38 0