第四章、Java面向对象(三)

第四章、Java面向对象(三)

本人也是刚入门Java语言,可能会有一些地方出现错误,描述的不对。如果发现不对的地方请及时指出,好对其进行修改。这样不仅可以让我学到东西,也可以让其他刚入门的朋友学习更正确的内容。

所有内容仅供参考。不具有完全的准确性!

注:关于Java的所有内容都会参考到尚硅谷在网上公开的学习视频及其提供的PPT

一、面向对象三大特征:封装
(一)为什么需要封装
在日常生活中,我们会用到各种各样的东西。当我们使用这些东西的时候,不需要去了解其内部是如何构造的,怎么运行的,我们只需要知道该如何使用它就好了。比如:洗衣机、汽车、冰箱等等。
像洗衣机,我们使用的时候只需要按一下开关就好了,无需知道它为什么可以转,它是怎么转的。这就可以说是日常生活中的封装。
通过封装,可以实现对属性的数据访问限制,同时增加了程序的可维护性。

(二)什么是封装
隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。

(三)封装怎么使用
通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:

  1. 隐藏一个类中不需要对外提供的实现细节(通过修改访问权限进行隐藏);
  2. 使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;
  3. 便于修改,增强代码的可维护性;

例:
将数据封装起来,需要通过getXxx()方法获取值,setXxx()设置值

	//将属性name 和 age 定义为private
	private String name;
	private int age;
	//提供公共的方法实现对属性的读写
	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;
	}

(四)封装的优点

  • 提高程序的“高内聚、低耦合”。
    高内聚 :类的内部数据操作细节自己完成,不允许外部干涉;
    低耦合 :仅对外暴露少量的方法用于使用。
  • 类内部的结构可以自由修改。
  • 可以对成员变量进行更精确的控制。
  • 隐藏信息,实现细节。

二、访问修饰符
在这里插入图片描述
三、构造器(或构造方法)
语法格式:
权限修饰符 类名(参数列表){
初始化语句;
}

(一)构造器的特征

  1. 它的名字和类名相同
  2. 没有任何返回值(包括void也没有)
  3. 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值
  4. 可以有多个,但形参列表不能一样(可以重载)

(二)构造的作用

  • 创建对象,给对象进行初始化。
    如Object obj = new Object();
    此处使用的就是Object类中的空参构造器。
    Person p = new Person(“张三”,26,“男”);
    此处使用构造器时Person类中的带参构造器:public Person(String name, int age, String sex){ 初始化语句; }。通过此构造器可以为对象p的属性进行初始化。

如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的构造器中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们
要“洗澡”了。

例:

class Person{
	private String name;
	private int age;
	private String sex;
	
	//空参构造器
	public Person(){
		
	}
	//全参构造器
	public Person(String name, int age, String sex) {
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	
	//对属性就行封装
	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;
	}
}

创建对象:

public static void main(String[] args) {
		
		//创建空参的构造器
		Person p = new Person();
		
		//创建带参的构造器
		Person p1 = new Person("张三",24,"男");
		
		//测试对象  p和 p1的属性值
		//因为Person类中的所有属性都被封装了起来,所以要通过提供的接口(getName())来读取属性信息
		System.out.println(p.getName());
		
		System.out.println(p1.getName());
	}

输出结果:

null
张三
  • 构造器的分为两类:
    隐示无参构造器(系统默认提供)
    显示定义一个或多个构造器(无参、有参)

  • 注意

  1. Java语言中,每个类都至少有一个构造器
  2. 默认构造器的修饰符与所属类的修饰符一致
  3. 一旦显式定义了构造器,则系统不再提供默认构造器
  4. 一个类可以创建多个重载的构造器
  5. 父类的构造器不可被子类继承

四、了解JavaBean
推荐:
https://blog.csdn.net/chenchunlin526/article/details/69939337
https://blog.csdn.net/fuhanghang/article/details/84074561

五、this关键字
推荐:https://www.cnblogs.com/zheting/p/7751752.html
this 关键字用来表示当前对象本身,通过 this 可以调用当前对象的所有方法和属性。
this 可以调用类的属性、方法和构造器
它在方法内部使用,即这个方法所属对象的引用;
例:

	private String name;
	
	public void show(){
	// 此处的this根据掉用show()方法的对象而定,谁调用的show(),this就表示谁
		this.name = "Tom";
	}

它在构造器内部使用,表示该构造器正在初始化的对象;

例:

	private String name;
	
	//空参构造器
	public Person(){
		//当使用该构造器创建对象时,this就表示该对象
		this.name = "法外狂徒张三";
	}

什么时候使用this关键字呢?
当在方法内需要用到调用该方法的对象时,就用this。
具体的:我们可以用this来区分属性和局部变量
比如:this.name = name;

注意:

  1. 可以在类的构造器中使用"this(形参列表)"的方式,调用本类中重载的其他的构造器!
  2. 明确:构造器中不能通过"this(形参列表)"的方式调用自身构造器
  3. 如果一个类中声明了n个构造器,则最多有 n - 1个构造器中使用了"this(形参列表)"
  4. "this(形参列表)"必须声明在类的构造器的首行!
  5. 在类的一个构造器中,最多只能声明一个"this(形参列表)"

参考:
https://www.jb51.net/article/120663.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值