Java基础13-封装与抽象

1.在企业面试过程中,经常会被问到,面向对象有哪些基本特性?答案应该是:封装、继承和多态。如果要求四个答案的话,

可以增加一个抽象。

(1).封装就是将抽象得到的属性和行为结合起来,形成一个有机整体,也就是类。类里面有些属性和方法(尤其是属性)需要隐藏起来,不希望直接对外公开,但同时提供供外部访问的方法来访问这些需要隐藏的属性和方法。

(2).封装的目的是增强安全性和简化编程,使用者不必了解具体类的内部实现细节,而只是要通过提供给外部访问的方法,来有限制的访问类需要隐藏的属性和方法。

(3).封装有些时候就像男人藏私房钱一样,不能让媳妇知道。

先来个例子看看:

public class Man{

//对属性的封装,一个人的姓名,年龄,妻子都是这个对象(人)的私有属性

private String name;

private int age;

private Woman wife;

//对该人对外界提供方法的封装,可以设定妻子,姓名,年龄也可以获得男人的姓名和年龄
  // 方法封装
  public void setWife(Woman wife) {
  this.wife = wife;
  }
  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 class Woman {
  // 属性封装
  private String name;
  private int age;
  private Man husband;
  // 方法封装
  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 Man getHusband() {
  return husband;
  }
  public void setHusband(Man husband) {
  this.husband = husband;
  }
  }

/**

* 仔细看就会发现,Man类没有提供getWife的方法,这是因为男人不想让自己的妻子被外界访问,

* 接下来呢,就是封装可以把一个对象的属性私有,而提供一些可以被外界访问的属性的方法,

* 比如说,name属性,Man和Woman类都有相应的get和set方法,外界都可以通过这些方法访问和修改

* 同时对一些对象不想让外界访问的属性,就不提供其方法,比如说Man的wife属性,就没有get方法

* 外界是不能得到Man类的wife属性的

*/

上面那例子可能没有突出封装的好处,下面来个超简单的表达下:

public class Show{

public static void show(String str){

System.out.println(str);

}

}

上面就是对 System.out.println();的封装。

调用的时候 :

public class Use{

public static void main(String[] args){

Show.show("封装");

}

}

这样用的时候就不用使:System.out.println("封装");

2.面向对象设计首先要做的就是抽象,根据用户的业务需求抽象出类,并关注这些累的属性和方法,将现实世界中的对象抽象成程序设计中的类。

例如:

设计一个贪吃蛇游戏,

抽象成类和类的成员大概有这么几种

(1)蛇类,属性:长度,位置,死活,暂停,方法:移动、吃食物、改变方向;

(2).食物类,属性:位置、食物的种类(例如普通食物和超级食物);

(3).障碍物类,属性:位置;

(4).面板:属性:面板的大小,位置,菜单,按钮,方法:画出背景,画出食物,画出蛇,画出障碍物,开启线程、播放音效、增加键盘监听等;

(5).背景音乐播放类,属性:音乐文件的位置,方法:开启线程,播放音效,播放次数设定(背景音乐只要蛇不死就循环播放,其他音效播放设定的次数)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值