初学java面向对象编程三大特性之——封装

本文详细介绍了Java中的封装概念,包括信息隐藏的原因、访问修饰符的应用,以及如何实现属性和方法的封装。此外,还讲解了UML类图、构造方法、this关键字、static关键字的特点与使用,方法重载的原理,以及包的作用和命名规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.封装的概念

1.将东西包在一起,然后以新的完整形式呈现出来
2.将方法和字段一起包装到一个单元中,单元以类的形式实现
3.信息隐藏,隐藏对象的实现细节,不让外部直接访问到
信息隐藏是OOP最重要的功能之一,也是使用访问修饰符的原因

1.信息隐藏的原因包括

1.对模块的任何实现细节所作的更改不会影响使用该模块的代码
2.防止用户意外修改数据
3.使模块易于维护和使用(就是电脑配件)

2.访问修饰符

public 该类或非该类均可以访问

private 只有该类可以访问

protected 该类及其子类的成员可以访问,同一个包中的类也可访问

默认 同一个包中的类可以访问
在这里插入图片描述

3.属性封装的实现

·属性封装的实现:
修改属性的可见性来限制对属性的访问
为每个属性创建一对赋值方法(setter)和取值(getter)方法,用于公开对这些属性的访问接口
在setter和getter方法中,根据需要加入对属性操作的限制

4.方法封装的目的

隐藏方法实现细节(方法体),向外部提供公开接口(方法头),以供安全调用
简化调用,方便修改维护
根据需要,可以私有化方法,以供内部使用—帮助方法helper

二.UML类图

Unified Modeling Language (UML)又称统一建模语言或标准建模语言
类的命名尽量应用领域中的术语,
应明确、无岐义,以利于相互交流和理解。
类的属性、操作中的可见性使用+、#、-分别表示public、protected、private
在这里插入图片描述

三.构造方法

1.类的构造方法的概念和作用

构造方法负责对象初始化工作,为对象的属性赋合适的初始值创建对象时,其类的构造方法确保在用户操作对象之前,系统保证初始化的进行

2.构造方法的语法和规则

·构造方法名与类名一致
·没有返回类型
·方式实现主要为字段赋初值 *构造方法可以有多个,调用哪个取决new的时候参数个数

3. 构造方法的实例

class Student {
	int age;
	double score;
	String name;
	Student (int newage,double newscore, String newname){
		System.out.println("构造方法一被调用");
		age=newage;
		score=newscore;
		name=newname;
	}//java语言中 构造方法在类里面可以有多个,是可重载的:函数名字一样,在C语言中是不允许的。
	Student (){
		System.out.println("构造方法二被调用");
	}
	void PrintMent() { // 方法=函数
		System.out.println("name=" + name + " age=" + age + " score=" + score);
	}
}

public class Demo1 {
	public static void main(String[] args) {
		Student stu=new Student(1,99,"xiaoming");
	}
}

4.构造方法的调用

构造方法的调用很特别:new操作符(实例化对象的时候,自动被调用)

四.this关键字的特点与实例

1. 特点

·在类的方法中,使用this关键字代表的是调用此方法的对象的引用。
·this可以看做是一个变量,它的值是当前对象的引用
·使用this可以处理方法中的成员变量和形参同名的问题
·当在方法内需要用到调用到该方法的对象时,就可以用this
·在类的构造方法中可以调用this([参数列表])来调用该类的指定构造方法

2.实例

class Student {
	int age;
	double score;
	String name;
	Student (int age,double score, String name){
		this();  //在类的构造方法中可以调用this([参数列表])来调用该类的指定构造方法
		System.out.println("构造方法一被调用");
		this.age=age;
		this.score=score; //使用this可以处理方法中的成员变量和形参同名的问题

		this.name=name;
	}
	Student (){
		System.out.println("构造方法二被调用");
	}
	void testthis(){
		Student temp=null;
		temp=this;
		System.out.println(temp.age);//this可以看做是一个变量,它的值是当前对象的引用

		
		System.out.println(this.name);//在类的方法中,使用this关键字代表的是调用此方法的对象的引用
	}
	void PrintMent() {
	
		System.out.println("name=" + name + " age=" + age + " score=" + score);
	}
}

public class Demo1 {
	public static void main(String[] args) {
		Student stu=new Student(1,99,"xiaoming");
		stu.testthis();
	}
}

五.static关键字的特点 实例 注意事项

1. 特点

·用来修饰类的成员—修饰成员变量的称为类变量(静态变量)
·修饰成员方法称之为类方法(静态方法)
·当类被加载的时候就会被加载,优先于对象的存在
·用来修饰语句块—称之为静态代码块,先于构造方法之前执行,只会执行一次,
用来对静态成员做初始化。
·调用的时候可以直接通过类名.成员来进行访问

2.实例

class Student {
	int age;
	double score;
	String name;
	static int data;  //用来修饰类的成员—修饰成员变量的称为类变量(静态变量)

	Student (int age,double score, String name){
		
		System.out.println("构造方法一被调用");
		this.age=age;
		this.score=score; //使用this可以处理方法中的成员变量和形参同名的问题

		this.name=name;
	}
	static{  //构建静态代码块
		System.out.println("静态代码块");
		data=100;
	}
	Student (){
		System.out.println("构造方法二被调用");
	}
	void testthis(){
		
	}
	void PrintMent() {
	
		System.out.println("name=" + name + " age=" + age + " score=" + score);
	}
}
 class Demo1 {
	static int add (int x,int y) //修饰成员方法称之为类方法(静态方法)
	{
		return x+y;
	}
	
	public static void main(String[] args) {
		Student stu=new Student(1,99,"xiaoming");
		Student stu1=new Student(1,99,"xiaoming");
		Student.data=10;
		System.out.println("set="+add(1,2));
	}
}

3. 注意事项

·静态方法中只能访问外部的静态成员
·静态方法中不能出现this关键字 //个人觉得this是对象的引用而静态方法是属于类的,优先于对象。

六.方法重载

多数程序设计语言要求为每个方法(函数)提供一个独一无二的方法名,不存在方法重载的概念
在java中,规定方法签名是解析方法的规则而不是方法名,为方法重载开创了条件
方法重载使得在一个类中,方法名相同而参数列表不同的方法可同时存在,代表相似的行为或功能
如System.out.println()在这里插入图片描述

七. 包

Package—声明包
·Java程序猿都可以编写属于自己的Java包,为了保证包名唯一性,要求程序猿在自己定义包的名字前加上唯一前缀
·由于互联网上的域名称不会重复,所以推荐采用公司在互联网上的域名的倒置作为包的唯一前缀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值