OOP知识整合---封装

目录

一、成员变量和局部变量

1、成员变量:

(1)定义:

(2)声明位置:

(3)作用域:

2、局部变量:

(1)定义:

(2)声明位置:

(3)作用域

二、包

1、定义:

2、包的创建:

3、包的作用:

三、访问权限(访问修饰符)

1、什么是访问修饰符:

2、访问修饰符的作用域:

四、this关键字

(1)this在方法中表示正在调用该方法的当前对象

(2)this可以在方法内部调用到对象的属性信息

(3)this可以用来区分成员变量(全局变量)和局部变量,

(4)this可以用来在一个类中,在一个方法中去调用 另一个方法

(5)this可以在构造方法中调用其他构造方法,但是调用时必须写在构造方法中的第一句。

五、方法的重载

1、定义:

2、方法重载的特点:

(1)在同一个类中,方法名一样

(2)参数列表不一样(参数的个数不一样,参数的数据类型不一样)

(3)与访问修饰符和返回修饰符无关

六、封装

1、定义:

2、封装的原则:

(1)隐藏所有的属性

(2)提供开发的接口

3、封装的好处:

4、封装的步骤:

(1)用private修饰所有的属性

(2)编写对应的getter和setter方法

(3)在get和set方法中加入控制语句

七、实体类(Javabean)

1、实体类中包含的内容:

(1)private修饰的属性

(2)getter和setter方法

(3)构造方法:空构造、全参构造

(4)自己的方法

八、构造方法

1、定义

2、如何定义构造方法:   

(1)空构造方法,默认无参的构造方法​编辑

(2)两个参数的构造方法

​​​​​​​(3)全参数的构造方法

​​​​​​​3、构造方法的特点

(1)方法名和类名一样

(2)构造方法没有返回值,void也没有,所以方法中没有return语句

(3)构造方法中可以有参数,每个构造方法的参数不一样

(4)在new对象的时候,会自动调用构造方法

(5)java系统会默认给我们提供一个无参的构造方法,但是当我们自己定义了构造方法时,系统将不再提供无参的构造方法,所以我们需要自己写上无参构造方法

九、Static关键字

1、定义:

​​​​​​​2、static的特点

​​​​​​​3、静态方法有以下几个特点:

十、Final关键字

1、定义:

​​​​​​​2、Final的特点:

(1)final修饰的类不能被继承

(2)Final可以用来修饰的结构:类、方法、变量

(3)final修饰的方法不能被重写(前提是继承)​编辑

(4)final修饰的属性(变量)会变成常量​编辑

(5)使用 final 关键字声明类、变量和方法需要注意以下几点:


一、成员变量和局部变量

1、成员变量:

(1)定义:

定义在类的变量,也叫全局变量,在整个类中都可以使用的变量,分为静态变量(类变量) 和 实例变量 -----------成员变量(全局变量):属性(静态变量)

(2)声明位置:

类里方法外

(3)作用域:

整个类

2、局部变量:

(1)定义:

定义在方法的变量

(2)声明位置:

类里方法里

(3)作用域

方法局部里

二、包

1、定义:

在项目中用来对类进行管理的模块

2、包的创建:

在src上创建,可以有多级,包名全小写,用多级包之间用 . 隔开

3、包的作用:

合理管理所有的类,使类的查找更轻松

三、访问权限(访问修饰符)

1、什么是访问修饰符:

主要用于控制类成员对于类的外部访问的可见性和权限。访问修饰符可以限制类的外部对于类成员的访问方式和程度用来控制内容的显示范围,控制可见性的关键字

2、访问修饰符的作用域:

eg:----public

----private

四、this关键字

(1)this在方法中表示正在调用该方法的当前对象

(2)this可以在方法内部调用到对象的属性信息

(3)this可以用来区分成员变量(全局变量)和局部变量,

(4)this可以用来在一个类中,在一个方法中去调用 另一个方法

this可以调用当前类中的其他普通方法,通常在一个类中,一个方法中调用另一个方法可以直接通过方法名调用,也可以使用this调用,效果一样,语法不一样而已

(5)this可以在构造方法中调用其他构造方法,但是调用时必须写在构造方法中的第一句。

语法:this(被调用构造方法的参数)  ---  this(name);

五、方法的重载

1、定义:

在同一个类中,方法名一样,参数列表不同的多个方法

2、方法重载的特点:

(1)在同一个类中,方法名一样

(2)参数列表不一样(参数的个数不一样,参数的数据类型不一样)

          ①参数的个数不一样

          ②参数列表的顺序不一样

          ③参数列表的数据类型不一样

(3)与访问修饰符和返回修饰符无关

六、封装

1、定义:

隐藏某些信息在类的内部,提供相应的方法来操作和访问类的信息,不允许外部程序直接访问

2、封装的原则:

(1)隐藏所有的属性
(2)提供开发的接口

3、封装的好处:

合理隐藏,合理暴露

把所有的属性藏起来,把尽可能多的东西藏起来,对外提供便捷的接口

4、封装的步骤:

(1)用private修饰所有的属性

(2)编写对应的getter和setter方法

  

(3)在get和set方法中加入控制语句

七、实体类(Javabean)

1、实体类中包含的内容:

(1)private修饰的属性
(2)getter和setter方法

(3)构造方法:空构造、全参构造

(4)自己的方法

八、构造方法

1、定义

方法名和类名一样,没有返回值,也没有void的方法

2、如何定义构造方法:   

在public 类名(参数){}中:

(1)空构造方法,默认无参的构造方法
(2)两个参数的构造方法

​​​​​​​​​​​​​​(3)全参数的构造方法

​​​​​​​3、构造方法的特点

(1)方法名和类名一样
(2)构造方法没有返回值,void也没有,所以方法中没有return语句
(3)构造方法中可以有参数,每个构造方法的参数不一样
(4)在new对象的时候,会自动调用构造方法
(5)java系统会默认给我们提供一个无参的构造方法,但是当我们自己定义了构造方法时,系统将不再提供无参的构造方法,所以我们需要自己写上无参构造方法

九、Static关键字

1、定义:

static表示静态,可以用来修饰属性、方法、代码块、内部类等:被static修饰的内容就不在属于对象实例了,而是属于类本身的,可以通过类名直接调用,不需要创建对象

在Java语言中,static关键字是一种非常重要的修饰符,可以用于变量、方法、代码块和内部类等语法结构中。

它的主要作用是使得这些语法结构不再与对象实例相关,而是属于类本身,从而可以在不创建对象的情况下进行访问和调用

​​​​​​​2、static的特点

(1)static可以用来修饰属性、方法、代码块({})、内部类

(2)static修饰的属性、方法、内部类可以直接通过类名调用

(3)static修饰的代码块在类被加载的时候就会执行且只执行一次,因为类只会加载一次

(4)static修饰的属性属于类,不属于对象的实例,只有一个空间,后赋值会覆盖先赋的值,属性的值可以被所有对象共享

(5)静态内容在类中的执行顺序:静态属性——静态方法——静态块——普通属性——普通方法——构造方法

(6) 静态内部类属于外部类,可以直接用外部类名进行调用,但不属于外部类的对象

​​​​​​​3、静态方法有以下几个特点:

①静态方法不能访问非静态的变量和方法。因为非静态的变量和方法需要先创建对象才能访问,而静态方法是不需要创建对象的。

②静态方法不能使用this关键字。因为this关键字代表当前对象,而静态方法是不需要当前对象的。

③静态方法可以被子类继承和重写。但是,如果在子类中重写了静态方法,那么只有在通过子类名来调用该方法时,才会调用子类中的方法,而不是父类中的方法。

十、Final关键字

1、定义:

在java中,final可以用来修饰类、方法和变量。final修饰类,表示该类是无法被任何其他类继承的,意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展。

​​​​​​​2、Final的特点:

(1)final修饰的类不能被继承
(2)Final可以用来修饰的结构:类、方法、变量
(3)final修饰的方法不能被重写(前提是继承)
(4)final修饰的属性(变量)会变成常量

常量:声明时必须赋值,后期不能重复赋值的变量       ----- 常量名全大写

(5)使用 final 关键字声明类、变量和方法需要注意以下几点:

①final 用在变量的前面表示变量的值不可以改变,此时该变量可以被称为常量。

②final 用在方法的前面表示方法不可以被重写(子类中如果创建了一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为方法重写,又称为方法覆盖。这里了解即可,教程后面我们会详细讲解)。

③final 用在类的前面表示该类不能有子类,即该类不可以被继承。

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个简单的学生集合的示例代码,您可以参考: ```c++ #include <iostream> #include <string> #include <vector> using namespace std; class Student { private: string name; int age; double score; public: Student(string n, int a, double s) : name(n), age(a), score(s) {} string getName() const { return name; } int getAge() const { return age; } double getScore() const { return score; } }; class StudentCollection { private: vector<Student> students; public: void addStudent(Student s) { students.push_back(s); } void removeStudent(Student s) { for (vector<Student>::iterator it = students.begin(); it != students.end(); ++it) { if (it->getName() == s.getName()) { students.erase(it); break; } } } void printStudents() const { for (vector<Student>::const_iterator it = students.begin(); it != students.end(); ++it) { cout << "Name: " << it->getName() << ", Age: " << it->getAge() << ", Score: " << it->getScore() << endl; } } }; int main() { StudentCollection sc; sc.addStudent(Student("Tom", 18, 90)); sc.addStudent(Student("Jerry", 20, 80)); sc.addStudent(Student("Alice", 19, 85)); sc.printStudents(); sc.removeStudent(Student("Jerry", 20, 80)); sc.printStudents(); return 0; } ``` 这个示例代码中,定义了一个 `Student` 类和一个 `StudentCollection` 类。其中 `Student` 类表示一个学生,包括学生姓名、年龄、分数等信息。`StudentCollection` 类表示一个学生集合,包括添加学生、删除学生、打印学生信息等操作。在 `main` 函数中,演示了如何使用 `StudentCollection` 类来管理学生集合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值