学习编程是一项让人愉悦,充满惊喜和挑战的任务。尽管它的复杂性可能会让你感到沮丧,而错误的代码也会让你觉得无从下手,但请明白这都是正常的情况。没有人能一蹴而就,成功总是建立在失败和不断改进之上。
一、什么是类和对象封装
1、定义:
在Java语言中,类和对象封装是两个非常重要的概念。类是一种封装了数据和方法的模板,而对象则是类的实例化对象,具有这个类所描述的属性和方法。
封装指的是将数据和方法包装到一个单元中,以使得类的实现过程对外隐藏,只允许通过特定的接口访问其属性和方法。这样做的优点是可以避免非法访问和误操作,从而提高系统的稳定性和安全性。
2、意义:
类和对象封装是面向对象编程的核心概念之一,对于软件的设计和开发具有重要意义。类和对象封装的主要意义包括以下几个方面:
(1)提高代码复用性:将同一类的属性和方法封装到一个单元(类)中,可以方便地进行代码复用。
(2)降低模块间的耦合度:通过类之间的继承关系、接口实现等方式,使得模块之间的依赖性更为松散,从而提高了代码的可维护性和可扩展性。
(3)隐藏实现细节:通过将类的内部细节封装起来,只暴露必要的公共接口,可以有效地控制外部访问类的成员变量和方法的途径,保证系统安全性和稳定性。
(4)促进并行开发:类和对象的封装允许不同程序员并行地开发不同的函数或方法,同时也允许在同一程序内的不同阶段,分步骤地实现和测试程序。
(5)提高代码的可读性和易于理解性:通过将不同的操作和任务分解到不同的类中,并且仅将最少的必要信息传递给其他类,可以极大地简化程序的逻辑结构,使代码更易于理解和维护。
总之,类和对象封装为软件设计提供了良好的编程架构和模型,通过隐藏实现细节、降低模块耦合度、提高代码复用性等方式,在软件开发中起到至关重要的作用。
二、类和对象封装的实现
1、类的定义和实现:
在Java语言中,我们使用class
关键字定义一个类,如下:
public class Person {
// 公开属性
public String name;
public int age;
// 构造方法
public Person(String name, int age){
this.name = name;
this.age = age;
}
// 公开方法
public void sayHello(){
System.out.println("Hello, my name is " + name + ". I'm " + age + " years old.");
}
}
上面这段代码定义了一个Person的类,构造方法不明白是什么的话,可以去看我以前写的博客——《Java的初级认识》网址:https://blog.51cto.com/u_15880518/6186962,这里面有详细的介绍到什么是构造方法。
2、访问权限关键字:
那我们封装,到底是怎么一回事呢?这就不得不介绍到我们设定访问权限的关键字
在Java语言中,有四种访问控制修饰符:public
、private
、protected
和默认访问(不写任何关键字)。其具体作用如下所示:
public(公共的)
:访问控制符:没有任何限制,可以从类的外部访问。private(私有的)
:访问控制符:只能在类的内部被访问,无法从类的外部直接进行访问。protected
访问控制符:只能在类的内部和其子类中访问。- 默认访问控制符:只能在类内部和同包下的其他类中进行访问。
一般在Java里面,用的最多的就是公共的和私有的这两个极端,需要设置权限的话,直接用就好了,比如上面代码,改成下面这样:
public class Person {
// 私有属性
private String name;
private int age;
// 构造方法
public Person(String name, int age){
this.name = name;
this.age = age;
}
// 公开方法
public void sayHello(){
System.out.println("Hello, my name is " + name + ". I'm " + age + " years old.");
}
}
这样子,名字和年龄就变成私有属性了,只能在Person
这个类内部使用。
3、对象的创建与使用:
对于一个类,我们可以通过创建对象来访问他的属性和方法。在Java语言中,我们可以使用new
关键字来创建对象,如下:
Person p1 = new Person("Alice", 25);
Person p2 = new Person("Bob", 30);
p1.sayHello();
p2.sayHello();
该代码通过new
关键字创建了p1、p2
两个对象,我们通过点运算符,就可以访问Person里的属性和方法了,如下:
System.out.println(p1.getName()); // 输出 "Alice"
System.out.println(p1.getAge()); // 输出 "25"
p1.sayHello(); // 输出 "Hello, my name is Alice. I'm 25 years old."
不过,这个对象访问也有缺陷,就是被private
和protected
修饰的不能被直接访问,如果要访问,只能通过该类内部的方法来访问与修改,如下:
public class Person {
private String name;
private int age;
// 修改器(setter)方法
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
// 访问器(getter)方法
public String getName(){
return name;
}
public int getAge(){
return age;
}
// 公开方法
public void sayHello(){
System.out.println("Hello, my name is " + name
+ ". I'm " + age + " years old.");
}
}
在上述代码中,我们将name
和age
属性定义为私有属性,并用getter
和setter
方法来实现对属性的访问和修改。这样,在类的内部可以通过this.name
和this.age
来访问这两个属性,但是在类的外部无法直接进行访问,以此来提高代码的安全性。
三、总结
类和对象封装是Java语言面向对象编程中非常重要的概念,它们可以帮助我们将数据和方法包装到一个单元中,以实现对数据和过程的保护和控制。在Java语言中,我们可以使用class
和访问控制符来实现类和对象封装,从而使得程序更加模块化、安全和可维护。
心灵鸡汤:
写代码的过程可能看起来毫无头绪,但在构思和落实计划时却体现着价值。为了完成一项任务,你可能需要使用多个语言和框架,在遇到挫折的时候保持谨慎和慎重。然而,如果你坚定地前进,不断摸索,那么你将会发现自己能够轻易地理解它们,迅速理解其中的关系,并最终实现自己的目标。