• 关于类和对象超级初级小白知识


    下面的内容只是一小部分,在整个面向对象的知识中并不完整,用于记忆和梳理

    目录

    前言:类和对象是什么?

    一、定义类

     1.如何定义类

    2.类的注意事项

    二.类的实例化

    1.创建对象的基础知识

    2.如何创建对象

    3.实例化举例

    4.访问对象

    5.实例化对象的一些注意事项

    三、this引用

    1.this引用的三大作用

    2.具体使用

    ​编辑

    四、初始化方式

    1.默认初始化

    2.就地初始化

    3.构造方法

    总结

    1.类和对象

    2.this引用

    3.初始化成员变量

    4.构造方法


    前言:类和对象是什么?

    (1)类是什么?

    1.类是用来对一个实体(对象)来进行描述的。比如这个实体(对象)的大小、长度和质量等等。

    2.类是Java语言中一种结构

    3.类的一般组成:成员变量、成员方法和构造方法

    (2)对象是什么?

    1.对象是一个实体。如果说类是一个形容词,那么对象就是被形容词修饰的名称。

    2.类是用来描述对象的。在Java语言中,对象是由类创造出来的。

    3.类相当于是一个类型,通过类型来创建变量

    (3)类、对象分别长什么样?


    上面就是类和对象大概长什么样,接下来一起更加深入的去了解如何定义类跟对象吧

    一、定义类

     1.如何定义类

    (1)类的定义格式

    class是定义类的一个关键字,是必须要有的。在class前面可以有一个修饰符,一般是public

    1. // 创建类
    2. class ClassName{  
    3.    field;       // 字段(属性) 或者 成员变量
    4.    method;      // 行为 或者 成员方法
    5. }

    (2)定义一个狗类

    这个类的名字为:PetDog;其中,花括号中的代码是狗的一些属性 ,用户可自行添加。

    (1)像前面两行代码,称为类的成员方法

    (2)后面两个方法,称为类的属性

    1. class PetDog {
    2.    public String name;//名字
    3.    public String color;//颜色
    4.    // 狗的属性
    5.    public void barks() {
    6.        System.out.println(name + ": 旺旺旺~~~");
    7.   }
    8.    // 狗的行为
    9.    public void wag() {
    10.        System.out.println(name + ": 摇尾巴~~~");
    11.   }
    12. }

    (3)类出现的两种形式

    第一种:class+类名的方式创造

    第二种:通过创造文件的形式

    (4)类的改名操作

    类不能直接在代码页面改名,需要通过以下的操作来

    第一步:找到类的位置

    第二步:

    改名后:

    在大概知道一个类是怎么定义之后,就应该了解在定义类时的一些注意事项,包括易错点和潜规则

    2.类的注意事项

    (1)一般一个java文件中定义一个类(推荐)

    最好就是一个java文件中出现一个class就好

    (2)类的命名采用大驼峰定义(推荐)

    1.只有一个单词时,需要首字母大写

    2.多个单词时,每个单词的首字母大写

    (3)public修饰的类必须要和文件名相同(必须要求)

    这种类 一般都是在创建类的时候自带的一个public(属于类的第二种创造方法)

    (4)一般main方法所在的类使用public修饰(推荐)


    了解了类的一些注意事项,就应该去了解对象是怎么来的,对象是什么了

    二.类的实例化

    用类类型创建对象的过程,称为类的实例化

    1.创建对象的基础知识

    1.使用new关键字和类名来创建对象

    2.一般会有一个指向对象的引用(变量)

    2.如何创建对象

    第一种:有一个引用指向对象

    第二种:匿名对象(当前用来理解对象是什么?)

    这种直接是new+类名+(),这个整体就是一个对象

    new Chichen6666();

    3.实例化举例

    这是一个定义好的狗类:

    1. class PetDog {
    2.    public String name;//名字
    3.    public String color;//颜色
    4.    // 狗的属性
    5.    public void barks() {
    6.        System.out.println(name + ": 旺旺旺~~~");
    7.   }
    8.    // 狗的行为
    9.    public void wag() {
    10.        System.out.println(name + ": 摇尾巴~~~");
    11.   }
    12. }

    在主函数内使用类定义对象

    1. public class Main{
    2. public static void main(String[] args) {
    3.        PetDog dogh = new PetDog();     //通过new实例化对象
    4. }
    5. }

    实例化大致包含两步:(1)为对象分配内存空间(2)调用合适的构造方法进行初始化

    4.访问对象

    每实例化一个对象,该对象就会拥有类中全部属性,可以说这些属性是属于对象的,接下来就可以通过对象的引用去访问这些属性了

    访问的格式:指向对象的引用(变量)+.  来访问对象中的属性和方法

    1. class PetDog {
    2.    public String name;//名字
    3.    public String color;//颜色
    4.    // 狗的属性
    5.    public void barks() {
    6.        System.out.println(name + ": 旺旺旺~~~");
    7.   }
    8.    // 狗的行为
    9.    public void wag() {
    10.        System.out.println(name + ": 摇尾巴~~~");
    11.   }
    12. }
    13. public class Main{
    14. public static void main(String[] args) {
    15.        PetDog dogh = new PetDog();     //通过new实例化对象
    16. dogh.name = "阿黄";//给对象中的name进行赋值
    17. dogh.barks();//访问成员方法
    18. }
    19. }

    5.实例化对象的一些注意事项

    1.new 关键字用于创建一个对象的实例。

    2.同一个类可以创建对个实例。

    3.使用 . 来访问对象中的属性和方法。

    三、this引用

    1.this引用的三大作用

    (1)this可以指向当前对象

    (2)this可以调用成员方法

    (3)this可以调用构造方法

    2.具体使用

    (1)指向当前对象

     当形参名字和成员变量名字一样时,是优先执行局部变量的,编译器就会认为两个变量都是局部变量,所以不能成功给成员变量赋值。

    1. public class Data {
    2. public int year;
    3. public int month;
    4. public int day;
    5. public Data(int year,int month,int day) {
    6. year = year;
    7. month = month;
    8. day = day;
    9. }
    10. public void print() {//打印的方法
    11. System.out.println(this.year+"/"+this.month+"/"+this.day);
    12. }
    13. public static void main(String[] args) {
    14. Data data = new Data();//对象1
    15. Data data1 = new Data(1999,9,9);//对象2
    16. data1.print();//调用打印函数
    17. }
    18. }

    针对上面的情况,要使用this表明该变量属于对象的,是成员变量

    1. public class Data {
    2. public int year;
    3. public int month;
    4. public int day;
    5. public Data(int year,int month,int day) {
    6. this.year = year;
    7. this.month = month;
    8. this.day = day;
    9. }
    10. public void print() {//打印的方法
    11. System.out.println(year+"/"+month+"/"+day);
    12. }
    13. public static void main(String[] args) {
    14. Data data = new Data();//对象1
    15. Data data1 = new Data(1999,9,9);//对象2
    16. data1.print();
    17. }
    18. }

    只要是成员变量,我们都可以在前面加上this引用。谁调用的这个变量,this就表明这个成员变量是这个对象的,就会给这个对象中的成员变量进行赋值

    (2)调用成员方法

    代码示例: 

    1. class Student {
    2. public String name;
    3. public int age;
    4. public Student(String name, int age) {
    5. this.name = name;
    6. this.age = age;
    7. }
    8. public void study() {
    9. this.eat();//在一个方法中调用其他的方法
    10. System.out.println(this.name+"正在学习");
    11. }
    12. public void eat() {
    13. System.out.println(this.name+"正在干饭");
    14. }
    15. }
    16. public class Test {
    17. public static void main(String[] args) {
    18. Student student1 = new Student("张三",18);
    19. student1.study();
    20. }
    21. }

    结果分析示例:

    (3)调用构造方法

    常用于在一个构造方法中去调用其他的构造方法

    代码示例:

    1. class Student {
    2. public String name;
    3. public int age;
    4. public Student(String name, int age) {
    5. this();//必须放在第一行
    6. this.name = name;
    7. this.age = age;
    8. }
    9. public Student() {
    10. System.out.println("无参构造方法被this调用了");
    11. }
    12. }
    13. public class Test {
    14. public static void main(String[] args) {
    15. Student student1 = new Student("张三",18);
    16. }
    17. }

    注意事项:

    this()调用构造方法时,必须放在第一行

    四、初始化方式

    我们定义类的时候,一般都会有成员变量和成员方法;而在定义成员变量的时候可以选择赋一个初值或者不赋(初始化),也可以在后续的操作中赋值,下面一一介绍

    1.默认初始化

    其实默认初始化就是不初始化,变量会有一个默认的初值

    1. class PetDog {
    2.    public String name;//默认初始化
    3.    public String color;//默认初始化
    4. }

    2.就地初始化

    就地初始化就是在定义成员变量的时候,直接赋值,这样定义的类的使用范围就会变得很狭窄,实例化的对象都是一样的属性

    1. class PetDog {
    2.    public String name = "旺财";//就地初始化
    3.    public String color = "黄色";//就地初始化
    4. }

    所以为了能应对更多的情况,不同的对象属性不同,使用构造方法去初始化成员变量

    3.构造方法

    (1)什么是构造方法

    1.构造方法又称为构造器,是一种特殊的成员方法。

    2.在构造方法中,可以初始化成员变量。

    (2)构造方法的特点

    1.构造方法的名字必须与类名相同。

    2.在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。

    3.无论用户有没有写构造方法,总是会被调用。

    4.构造方法没有返回值这一说法,设置为void也不行。

    5.构造方法可以重载。

     

    (3)使用构造方法

    第一种:编译器默认(隐式)提供

    下面的类是没有构造方法的,当用户没有提供时,编译器会默认提供一个无参的构造方法

    1. class PetDog {
    2.    public String name;//名字
    3.    public String color;//颜色
    4.    // 狗的属性
    5.    public void barks() {
    6.        System.out.println(name + ": 旺旺旺~~~");
    7.   }
    8.    // 狗的行为
    9.    public void wag() {
    10.        System.out.println(name + ": 摇尾巴~~~");
    11.   }
    12. }

    将编译器默认的构造方法显示出来

    1. class PetDog {
    2.    public String name;//名字
    3.    public String color;//颜色
    4.    // 狗的属性
    5.    public void barks() {
    6.        System.out.println(name + ": 旺旺旺~~~");
    7.   }
    8.    // 狗的行为
    9.    public void wag() {
    10.        System.out.println(name + ": 摇尾巴~~~");
    11.   }
    12. public PetDog() {
    13. //默认的无参构造方法
    14. }
    15. }

    这个默认的无参构造方法即使我们不写出来,编译器也会默认提供(这里为了认识特意写出来)

    第二种:自己写构造方法

    1. class PetDog {
    2.    public String name;//名字
    3.    public String color;//颜色
    4.    // 狗的属性
    5.    public void barks() {
    6.        System.out.println(name + ": 旺旺旺~~~");
    7.   }
    8.    // 狗的行为
    9.    public void wag() {
    10.        System.out.println(name + ": 摇尾巴~~~");
    11.   }
    12. public PetDog() {
    13. //默认的无参构造方法
    14. }
    15. //自己写的构造方法
    16. public PetDog(String name,String color) {
    17. this.name = name;
    18. this.name = color;
    19. }
    20. }

    第三种:由编译器自己生成

    由编译器生成的前提是:类中有成员变量,不然没有必要由编译时生成(默认会由有)

    根据下面提升的操作:

    第一步:这一步的快捷键为:Alt+Ins

    第二步:

    第三步:选择需要成员变量

    结果展示:


    上述就是构造方法的创造方法,下面介绍两种构造方法的区别,和当自己定义了构造方法之后,创建对象时的区别。

    (4)构造方法的区别和初始化

    下面介绍无参构造方法和有参构造方法在在实例化对象时候的区别

    第一种区别:默认无参构造方法与有参构造方法的区别

    无参构造方法在实例化对象的时候:

    1. public class PetDog {
    2. public String name;//名字
    3. public String color;//颜色
    4. public PetDog() {
    5. }
    6. }
    7. class Test {
    8. public static void main(String[] args) {
    9. PetDog dog1 = new PetDog();
    10. }
    11. }

     这种情况下的对象,就是为默认初始化的

    有参的构造方法在实例化对象的时候:

    总结

    1.类和对象

    (1)类是一个类型,用来创造对象

    (2)类中有成员变量和成员方法

    (3)对象的引用可以通过.号访问对象中的成员方法和成员变量

    2.this引用

    (1)this引用成员变量

    (2)this调用成员方法

    (3)this调用构造方法(存在一个构造方法中,必须在代码的第一行)

    (4)this只能在成员方法中使用

    (5)this调用构造方法时,不能形成闭环

    3.初始化成员变量

    (1)默认初始化

    (2)就地初始化

    (3)使用成员方法(在实例化对象时)

    4.构造方法

    (1)系统隐式默认提供

    (2)手动显示提供

    (3)通过编译器自己生成

  • 相关阅读:
    基于STM32的蓝牙小车(虚拟串口模拟)的Proteus仿真
    JVM 工作原理和流程
    掌动智能:UI自动化测试工具几点优势
    别再盯着40系,这些才是目前性价比最高的显卡
    目前看过最全的一线大厂面试题(题 + 详解),你所不知道的都在这
    # 技术栈知识点巩固——消息队列
    一幅长文细学JavaScript(七)——一幅长文系列
    【蓝桥杯集训100题】scratch售票找零 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第23题
    Lazada(东南亚)珠宝配饰、手表市场如何?这些热销需求产品一定要知道!
    栈的应用:表达式求值(中缀表达式,后缀表达式,前缀表达式)
  • 原文地址:https://blog.csdn.net/2301_77053417/article/details/135160912