Java中的类和对象是什么?如何创建?

1. 什么是类?什么是对象?
  • 现实生活中是由很多很多对象组成的,基于对象抽出了类

  • 对象:软件中真实存在的单个个体/东西

    类:类型/类别,代表一类个体

  • 类是对象的模板/模子,对象是类的具体的实例

  • 类中可以包含:

    • 对象的属性/特征-----------------------------成员变量
    • 对象的行为/动作/功能----------------------成员方法
  • 一个类可以创建多个对象

2. 如何创建类?如何创建对象?如何访问成员?
//学生类
public class Student {
    //成员变量----对象的属性
    String name;
    int age;
    String address;
    
    //方法-----对象的行为/功能
    void study() {
        System.out.println(name + "正在学习...");
    }
    void sayHi() {
        System.out.println("大家好,我叫" + name + ",今年"+age + "岁了,家住" + address);
    }
}

//学生类的测试类
public class StudentTest {
    public static void main(String[] args) {
        //创建一个学生对象
        Student student = new Student();
        //给成员变量赋值
        student.name = "张三";
        student.age = 18;
        student.address = "鹅城";
        //调用方法
        student.study();
        student.sayHi();
    }
}
3. 方法的签名:方法名+参数列表
4. 方法的重载(overload/overloading):
  • 发生在同一类中,方法名相同,参数列表不同

    public class Aoo {
        void show() {}
        void show(String name) {}
        void show(int age) {}
        void show(String name, int age) {}
        void show(int age, String name) {}
    
        //int show(){ return 1; } // 编译错误,重载与返回值类型无关
        //void show(String address){} // 编译错误,重载与参数名称无关
    }
    
  • 编译器在编译时会根据方法的签名自动绑定方法

    public class OverloadDemo {
        public static void main(String[] args) {
            Aoo o = new Aoo();
            o.show();
            o.show("张三");
            o.show(18);
            o.show("张三", 18);
            o.show(18, "张三");
        }
    }
    
5. 构造方法:构造函数、构造器、构建器-----------------------给成员变量赋初值的代码
  • 作用:给成员变量赋初值

  • 与类同名,没有返回值类型(连void都没有)

  • 在创建(new)对象时被自动调用

  • 若自己不写构造方法,编译器默认提供一个无参构造方法,若自己写了构造方法,则不再默认提供

  • 构造方法可以重载

    public class Student {
        String name; //成员变量(整个类中)
        int age;
        String address;
        // 无参构(如果不自己写构造,系统默认提供无参构造)
    //    Student() {}
        // 有参构造
        Student(String name, int age, String address) {
            this.name = name;
            this.age = age;
            this.address = address;
        }
    
        void sayHi() {
            System.out.println("大家好,我叫" + name + ",今年" + age+"岁了,家住" + address);
        }
    }
    
    public class ConsDemo {
        public static void main(String[] args) {
            //Student zs = new Student(); //编译错误,Student类没有无参构造方法
            Student student = new Student("张三", 18, "鹅城");
            student.sayHi();
        }
    }
    
6. this:指代当前对象,哪个对象调用方法它指的就是哪个对象

​ 只能用在方法中,方法中访问成员变量之前默认有个this.

this的用法:

  • this.成员变量名---------------------------访问成员变量

    当成员变量与局部变量同名时,若想访问成员变量,则this不能省略

  • this.方法名()--------------------------------调用方法(一般不用)

  • this()------------------------------------------调用构造方法(一般不用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C++ 操作符重载通常也分为头文件和源文件两部分。 在头文件,我们通常只需要声明该操作符的原型,而在源文件则需要实现该操作符的具体功能。 以重载运算符 `+` 为例,操作符重载的头文件和源文件的写法如下: 在头文件,声明该操作符的原型: ```c++ // MyClass.h #ifndef MYCLASS_H #define MYCLASS_H class MyClass { public: MyClass operator+ (const MyClass& other) const; private: int value; }; #endif ``` 在源文件,实现该操作符的具体功能: ```c++ // MyClass.cpp #include "MyClass.h" MyClass MyClass::operator+ (const MyClass& other) const { MyClass result; result.value = this->value + other.value; return result; } ``` 需要注意的是,如果该操作符重载函数是的成员函数,我们需要在函数名前面加上 `operator` 关键字,并在函数实现时使用 `::` 运算符指定该函数属于哪个。 而如果该操作符重载函数是的非成员函数,则需要在函数名前面加上 `friend` 关键字,并在函数实现时不需要指定该函数属于哪个。 例如,重载运算符 `<<` 时,我们通常会将其定义为一个非成员函数,并声明为该的友元函数,如下所示: ```c++ // MyClass.h #ifndef MYCLASS_H #define MYCLASS_H #include <iostream> class MyClass { public: friend std::ostream& operator<< (std::ostream& os, const MyClass& obj); private: int value; }; #endif ``` ```c++ // MyClass.cpp #include "MyClass.h" std::ostream& operator<< (std::ostream& os, const MyClass& obj) { os << obj.value; return os; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值