java面向对象的特性---------封装

面向对象在软件开发各个方面的应用:

OOA(Object Oriented Analysis):面向对象分析

在软件开发的过程中,面对一个新的项目启动时,第一件事情就是项目需求分析,把项目的方方面面,包括数据以及数据之间的关系都转换为对象,以及对象之间的联系。

OOD(Object Oriented Design):面向对象设计

把分析阶段得到的需求转换成符合成本和质量要求的系统实现方案,也就是说确定数系统需要哪些类,类中需要哪些属性和方法,类之间的关联等等。

OOP(Object Oriented Programming):面向对象的编程

就是把设计出来的类用代码实现。

面向对象最大的特点就是,程序研发人员可以根据具体的问题,设计出任何需要的类,用来解决问题。面向对象它是一种开发的思想,一种思考问题,分析问题,解决问题的方式,所以学习面向对象不是一天两天的事情,要多做练习去理解思想。

面向对象是java的核心思想,面向对象的三大特征:封装、继承、多态和抽象。

封装:

  1. 概念:面向对象的封装可以把对象的属性和方法组合在一起,统一提供对外的访问权限,封装就是将对象的使用者和设计者分开,设计者可以设计出外部可以操作的内容和只能内部操作的内容。使用者只能使用设计好的内容,却看不见设计者是如何实现的。就像计算机是由cpu、内存和各种外设组成的,对于计算机的用户来说,只能使用这些部件,但是却看不见这些部件的内部结构。
  2. 好处:在程序设计中,类把数据和方法封装到一起,对数据和方法的操作起到了保护的作用。
  3. 修饰符:开发人员在进行封装的时候,需要借助于一下的修饰符来控制对属性和方法的访问:
    1. public:表示公共的,用public修饰的属性和方法,其他任何的类都可以去访问,这是最开放的权限。
    2. private:表示私有的,用private修饰的属性和方法,只能在当前类中使用,其他类中没有办法使用。
    3. protected:表示受保护的,用protected修饰的属性和方法,可以在本包中的所有类中可以使用,并且可以在非本包的子类中可以是使用。
    4. 缺省的:就是方法和属性面前没有任何的修饰符,缺省修饰符的属性和方法可以在同包中的其他类进行访问,不允许其他包中的类,包括子类进行访问。

package com.bxit;

public class Person {

//定义属性

private String name;

private boolean sex;

private int age;

private String hobby;

//定义公共的方法

public void display(){

//.....

}

//定义一个私有的方法

private String getSex(){

return sex?"女":"男";

}

//定义一个受保护的方法

protected void study(){

//.....

}

//定义一个缺省的方法

void filter(){

//.....

}

}

修饰符的权限表:

内容

public

protected

缺省

private

同类访问

同包其他类访问

×

同包子类访问

×

不同包子类访问

×

×

不同包非子类访问

×

×

×

注意:

1.一般情况下,属性一般用private修饰,为了private修饰的属性能被外部访问。通常为属性定义一组get/set方法,称为属性的访问器。

2.如果属性只有get方法,没有set方法,称为只读属性;如果属性只有set方法,没有get方法称为只写属性。

例如:

private String name;

private String hobby;

private int age;

private String classes;

private boolean sex;

//访问接口get/set方法

//name的get方法  命名规则  get+(属性名首字母大写)

public String getName(){

return this.name;

}

//name的set方法 命名规则  set+(属性名首字母大写)

public void setName(String name){

this.name=name;

}

public int getAge() {

return age;

}

//可以在方法中对输入的内容进行限制

public void setAge(int age) {

if(age>=0&&age<200){

this.age = age;

}else{

System.out.println("年龄有误!");

this.age=200;

}

}

public String getClasses() {

return classes;

}

public void setClasses(String classes) {

this.classes = classes;

}

public boolean isSex() {

return sex;

}

public void setSex(boolean sex) {

this.sex = sex;

}

public String getHobby(){

return hobby;

}

public void setHobby(String hobby){

this.hobby=hobby;

}

(重要)方法的重载:

  1. 概念:在同一个类中一个方法的名称可以定义很多歌方法,只要参数不同即可,这叫做方法的重载。
  2. 好处:1.加强方法的灵活性

                    2.有利于方法调用的方便性。

例如:编写一个加法

解析:基本的数据类型中能够参与运算的就有7个,就算有数据类型的兼容性的情况,为了要考虑程序使用的方便灵活性,要考虑三种类型:int、long、double,因此两个数相加至少需要写三个方法才能够满足,代码如下:

package com.bxit;

/**

 * 方法的重载

 * @author QJ

 *

 */

public class Sum {

/**

 * 在一个类中可以有很多重名的普通的方法,叫做方法的重载。

 * 条件:1.参数列表必须不一致

 * (1).参数的数量不一样

 * (2).参数的类型不一样

 * (3).在参数相同的方法中,每一位上对应的数据类型不能一样

 *  2. 方法名称必须一样

 *  3.方法的重载和方法的返回类型没有一点关系,和方法的修饰符也没有关系

 * 好处:1.加强程序的灵活性

 */

//计算两个整数相加

public int add(int a,int b){

return a+b;

}

/*public double add(int a,int b){

return a+b;

}*/

public double add(double a,double b){

return a+b;

}

/*public double add(double a,int b){

return (a+b);

}*/

public long add(long a,long b){

return a+b;

}

}

方法重载的条件:

  1. 方法名称相同
  2. 方法的参数不同,其中方法的参数不同包括:
    1. .方法的参数数量不同。
    2. 方法的参数的类型不同。
    3. 相同数量的参数中,不同参数类型在方法参数列表中的顺序不同。

   注意:方法重载与方法的返回值类型和方法的修饰符没有任何关系,与参数列表中的参 数名称也没有任何的关系。

下一讲:面向对象继承

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值