Java面对对象之封装

学习到了封装,也希望这篇文章能个给后面学习java的人一点帮助.

首先我们用实际问题先感受一下封装的概念.

  用人来举例,人的年龄是有限的,0-120左右

  我们在社交网站填写个人信息的时候,也会有年龄这一项,那么这个年龄允许填写负数或者很大的数吗?

  实际上是不允许的.

  这个时候实际上是对年龄这一项做出了某些条件的限制

  再比如,中国人的名字.

  登记户口的时候,名字和领导人的名字同名是否可行?

  还是不行,因为国家不予许这样做

  这个时候国家对名字这一项也做出了条件限制

  回到我们程序

public static void main(String[] args) {          //符合语言规则,不符实际生活的案例,不推荐这样做
        Person p = new Person();
        p.age = -18;//这样做在语言层面是合法的,但是并不符合实际生活中的情况
        p.name = "习主席";
    }
class Person{
    int age;//类比人的年龄
    String name;//类比中国人的名字
}

  

  但是这样做会有很多不符生活的名字,年龄.

  所以Java的前辈们想出了一种方法,封装,用封装来给成员变量一定的限制.

    1.对成员变量或者方法添加private_____使其不允许被对象的引用(p.age会报错)直接访问;被private修饰之后无法直接访问那我们如何访问呢?

      例如age,可以这样去得到age  p.getAge();

        public int getAge() {
              return age;
          }

       设置年龄

        p.setAge();

        public void setAge(int age) {            //这样我们对年龄做出了限制,更加符合我们的需求           if(age>120 && age<0){            age==0;            return;            }
              this.age = age;
          }

    2.使用public成员方法操作被private修饰的成员

  

class Person{
    private int age;//使用private修饰age,不让这个属性被对象的引用直接访问,(p.age会报错)

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

}

 

  

  

  

原文地址:https://www.cnblogs.com/ls001/p/9933069.html

时间: 2024-10-10 12:59:23

Java面对对象之封装的相关文章

java面对对象

什么是面对对象: 就是把事务抽象成类,利用属性和方法描述他的特征: 面向对象的三大特性: 1.封装 隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性. 2.继承 提高代码复用性:继承是多态的前提. 3.多态 父类或接口定义的引用变量可以指向子类或具体实现类的实例对象.提高了程序的拓展性. 五大基本原则: 1.单一职责原则SRP(Single Responsibility Principle) 类的功能要单一,不能包罗万象,跟杂货铺似的. 2.开放封闭原则

java——面对对象

软件出现的目的:*用计算机的语言来描述世界*用计算机解决现实世界的问题 面向对象的思想 描述 面向对象的世界 面向对象设计和开发程序的好处:*交流更加流畅*提高设计和开发效率 构造方法:构造方法是用来描述对象创建的过程,构造方法在对象创建的过程中被调用 语法: 访问修饰符 构造方法名(){ //初始化代码}注意:构造方法名必须和类名相同:没有返回值: 方法重载:*方法名相同*参数项不同*与返回值和访问修饰符无关 this关键字用法: 调用属性:this.属性名=100: 调用方法: this.方

java 面对对象的三大特性

我们先要知道类的访问修饰符: public:公共的,在同一工程中任意地方都能访问. protected:受保护的,在同一包中课可以访问,不同包中的自己的“子类”中也可以访问:能被继承. Default:默认访问:同一包中的其他类使用,早同一包中能被继承, Private:私有的,只有在当前类使用:不能被继承,重写. 1.封装: 封装可以提高代码的重用性,能够隐藏实现细节. 是使类中的成员变量都是private,并提供public 方法访问这些成员变量的技术. 2.继承:(extends) 在面向

java面对对象 关键字this super

this:this是指向对象本身的一个指针,成员函数内部指向当前类的对象 其实this主要要三种用法: 1.表示对当前对象的引用! 2.表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下. 3.用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法).但是这里必须非常注意:只能引用一个构造方法且必须位于开始! 还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有th

java面对对象(六)--内部类、匿名内部类

内部类 可以在一个类的内部定义另一个类这种类成为内部类或嵌套类,比如: 1 class Outer{ 2 - 3 class Inner{ 4 -. 5 } 6 } 7 class Outer1{} // 这个Inner1不是Outer1的内部类,不在Outer1的类体括号内 8 class Innter1{ 9 -- 10 } 11 Class Outer2{ //Inner2虽然是在Outer2的方法内,但还是在Outer2的类体括号内,是内部类 12 -- 13 public void t

java面对对象-类与对象

一.定义类 类的重要性,所有Java程序都以类class为组织单元   如何定义类     一个全面的类定义比较复杂,如: package 包名; class 类名 extends 父类 implements 接口名{ 成员变量; 构造方法; 成员方法; } 定义类的步骤: a.定义类名 b.编写类的属性 c.编写类的方法 /** * 定义一个car类 */ public class car{ //属性 public String name; //车的名字 public int color; /

java面对对象入门(4)-程序块初始化

Java实例初始化程序是在执行构造函数代码之前执行的代码块.每当我们创建一个新对象时,这些初始化程序就会运行. 1.实例初始化语法 用花括号创建实例初始化程序块.对象初始化语句写在括号内. public class DemoClass { //This is initializer block 1 { //statements } //This is initializer block 2 { //statements } } 2.Java实例初始化器功能 实例初始化器具有以下功能. 我们可以在

基于java面对对象编程范式

科学思维&工程思维 科学思维:限制条件可有可无,理论可行寻求未解决问题转变为解决问题的最优解: 工程思维:限制条件多,现实可行性下寻求折中方案,不坏的解. 软件工程的发展历史: 数学-计算机问题   计算机-冯诺依曼模型 软件工程-用工程的问题来开放软件 计算机思维: 数学为计算机提供理论和基础-现实问题->数学->计算机解决 计算机用特有的软件(编程范式:命令式 函数式)和硬件(硬件结构:冯诺依曼结构 哈佛结构) 软件框架:编程范式(命令式 函数式 逻辑式) 层次性(机器指令 汇编指

js面对对象编程(二):属性和闭包

上篇博客中讲解了一些js对象的基本概念和用法,这篇博客讲解一下js属性方面的:公有属性,私有属性,特权方法. 如果学过java,公有属性,私有属性,特权方法(即可以访问和设置私有属性的方法)一定很熟悉,那么让我们来看看在js里如何实现呢? 1.公有属性 首先看公有的第一层意思是可以被大家所访问的,对外开放的属性,是相对于私有属性而言的: function Person(name,age){ this.name=name; this.age=age; this.getName=function()