java入门 -- 面向对象之封装

1 封装

1.1 何为封装

▪ 定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。

▪ 目的:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。
▪ 我们程序设计追求“高内聚,低耦合”。
▪ 高内聚 :类的内部数据操作细节自己完成,不允许外部干涉;
▪ 低耦合 :仅对外暴露少量的方法用于使用。

▪ 方法:Java中通过将数据声明为私有的(private),再提供公共的(public)
方法:getXxx()和setXxx()实现对该属性的操作,以增强代码的可维护性。

1.2 访问修饰符

java通过访问修饰符来实现对象对该类成员的访问权限。

修饰符类内部同一个包不同包的子类同一个工程
private
default(缺省)
protected
public

对于class的权限修饰只可以用public和default(缺省)。

2 构造器

构造函数也叫做构造函数

▪ 构造函数名必须与其类名称相同
▪ 构造函数必须没有显式返回类型
▪ 它不声明返回值类型。(与声明为void不同)
▪ 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值

有两种类型的构造函数

▪ 默认构造函数(无参数构造函数)
▪ 参数化构造函数

public abstract class Role {
	private String name;
	private int age;
	private String sex;
	public Role(String name, int age, String sex) {
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	public Role() {
		super();
	}
	}
//构造器一般用来创建对象的同时初始化对象,
//构造器重载使得对象的创建更加灵活,方便创建各种不同的对象

构造器和构造函数的区别
在这里插入图片描述

3 JavaBean

▪ JavaBean是一种可重用的Java组件,它可以被Applet、Servlet、JSP等Java应用程序调用.也可以可视化地被Java开发工具使用。它包含属性(Properties)、方法(Methods)、事件(Events)等特性。
▪ JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。

//一个标准的JavaBean
public abstract class Role {
	private String name;
	private int age;
	private String sex;
	public Role(String name, int age, String sex) {
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	public Role() {
		super();
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	abstract void play() ;
	@Override
	public String toString() {
		return "Role [name=" + name + ", age=" + age + ", sex=" + sex + "]";
	}

4 关键词this

java中this关键字的用法:

▪ 调用本类中的属性,即类中的成员变量
▪ 调用本类中的其它方法
▪ 调用本类中的其它构造方法,调用时需要放在构造方法的首行
▪ 在任意方法或构造器内,如果使用当前类的成员变量或成员方法可以在其前面添加this,增强程序的阅读性。不过,通常我们都习惯省略this。
▪ 当形参与成员变量同名时,如果在方法内或构造器内需要使用成员变量,必须添加this来表明该变量是类的成员变量
▪ 使用this访问属性和方法时,如果在本类中未找到,会从父类中查找
▪ this可以作为一个类中构造器相互调用的特殊格式
▪ 构造器中不能通过"this(形参列表)"的方式调用自身构造器

具体代码可以参考上面JavaBean的代码

5 package和import

▪ package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包。
▪ 包帮助管理大型软件系统:将功能相近的类划分到同一个包中。
▪ 包可以包含类和子包,划分项目层次,便于管理
▪ 在源文件中使用import显式的导入指定包下的类或接口
▪ 声明在包的声明和类的声明之间。
▪ 如果需要导入多个类或接口,那么就并列显式多个import语句即可
▪ 举例:可以使用java.util.*的方式,一次性导入util包下所有的类或接口。
▪ 如果在代码中使用不同包下的同名的类。那么就需要使用类的全类名的方式指明调用的是哪个类。
▪ import static组合的使用:调用指定类或接口下的静态的属性或方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面向对象是一种程序设计的思想,它将程序中的数据和对数据的操作封装在一起,形成对象。对象是类的一个实例,类定义了对象的属性和行为。在Java中,面向对象的概念包括类与对象的关系、封装、构造函数、this关键字、static关键字以及设计模式等方面。 设计模式是在软件设计中常用的解决问题的经验总结,它提供了一套可重用的解决方案。在Java中,单例设计模式是一种常见的设计模式之一,它保证一个类只有一个实例,并提供一个全局访问点。通过使用单例设计模式,可以确保在程序中只有一个对象实例被创建,从而节省了系统资源并提高了性能。 通过使用单例设计模式,可以实现以下效果: - 限制一个类只能有一个实例。 - 提供一个全局访问点,使其他对象可以方便地访问该实例。 - 保证对象的唯一性,避免多个对象的状态不一致。 在Java中,实现单例设计模式有多种方式,包括饿汉式、懒汉式、双重检测锁等。每种方式都有各自的特点和适用场景,开发者可以根据具体的需求选择合适的实现方式。设计模式是一种通用的解决问题的方法,它可以在面向对象的程序设计中提供灵活、可复用的解决方案。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [计算机后端-Java-Java核心基础-第15章 面向对象07 14. 设计模式与单例设计模式.avi](https://download.csdn.net/download/programxh/85435560)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [完整版Java全套入门培训课件 Java基础 03-面向对象(共18页).pptx](https://download.csdn.net/download/qq_27595745/21440470)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值