美文网首页
封装与隐藏--java学习第六天

封装与隐藏--java学习第六天

作者: Girl_endless | 来源:发表于2015-11-30 10:35 被阅读65次

在创建类的时候,类名需要单词首字母大写,方法名需要首字母小写,其他单词首字母大写,若方法名只有一个单词时,首字母大写。

在UML图中,-是私有的,+是公共的,#是protected。

一:面向对象特征之一:封装与隐藏

问题:当创建了类的对象了以后,如果直接通过“对象.属性”的方式对相应的对象属性进行赋值的话,可能会出现不满足实际情况的意外(例如动物的legs只能是偶数个,不能奇数),所以我们考虑不让对象来直接作用属性(int legs;  a.legs= 3),而是通过“对象.方法”的形式,来控制对象对属性的访问(重新定义一个方法,其中对legs进行限制)。实际情况中,对属性的要求就可以通过方法来实现。

但是当两种调用方式都可行的时候,就需要对“对象.属性”的方式进行限制,这里进行private进行限制,只能在该类被访问。

解决的方法:(封装性的思想)1.将类的属性私有化,2.提供公共的 方法(setter & getter)来实现调用。

二:权限修饰符:public  private   缺省  protected

注:权限从大到小的排列:public  protected  缺省 private

      修饰类的权限:public  缺省(在调用的时候,是用三角形表示缺省,用圆圈表示public) 

1.对于属性、方法和构造器的访问:

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

public类可以在任意地方被访问。

default类只可以被同一个包内部的类访问。

public类除了可以被本包内被访问调用外,若该类需要在该包以外被继承时,则需要导入其所在的包,才能够被进行调用。

一个小例子:

public class TestPerson {        

    public static void main(String[] args) {

        Person p = new Person();

        p.setAge(150);

        System.out.println(p.getAge());

     }

}

    class Person{

        private int age;

        public void setAge(int i){

            if(i>=0 && i <=130){

                 age = i;

            }else {

                  System.out.println("输入的年龄有误");

                  //throw new RuntimeException("shuru de shuju youwu");

             }

          }

          public int getAge(){

              return age;

         }

}

这种情况下,当输入不在0-130范围内时,会输出什么?

答:这种情况下会输出:输入的年龄有误

                             0

若抛出那句异常,则不会再有0输出。


类的第三个成员:构造器(constructor 构造方法)

constructor:建造者

构造器的作用:1,创建对象 2,给创建的对象的属性赋值,通过构造器的形参传递

1,设计类时,若不显示声明类的构造器的话,程序会默认提供一个空参的构造器。

public Person(){

}

2,一旦显示的定义了类的构造器,那么默认的构造器就不再提供了。若需要无参数的构造器时,则需要重新写一个空的够早方法。

Person p = new Person();平时用的都是不带参数的构造方法,系统自动提供,

Person p = new Person("5");这个是带参数的构造方法,

public Person(int a){    

]

3,如果声明类的构造器。格式:权限修饰符  类名(形参){  } ------------无返回值

4,类的多个构造器之间构成重载

二,类对象的属性赋值的先后顺序:类对象指的是new Person()

1,属性的默认初始(指定义了不带参数的构造函数以后,系统一旦创建该对象,便自动赋值指没有默认值的属性);

public Person(){                       private String name;(默认初始化)

name = null;                           private int age = 1;(显示初始化)

age = 34;

}//该构造函数不带参数

2,属性的显示初始化(指新建类中属性带有赋值)

3,通过构造器给属性初始化(带参数的构造器)

4,通过“对象.方法”给属性赋值

所以最终决定该属性值是多少时,应该从4到1往前看,因为后面的会将前面的值覆盖。所以构造器的赋值优于属性默认和显示的赋值。

相关文章

  • 封装与隐藏--java学习第六天

    在创建类的时候,类名需要单词首字母大写,方法名需要首字母小写,其他单词首字母大写,若方法名只有一个单词时,首字母大...

  • 【JAVA学习笔记】面向对象三大特性之“封装”

    学习自华为开发者学院陈璇老师的JAVA系列课程 一、封装 1.1 封装的目的 1.2 封装的实现(属性的隐藏,se...

  • Java基础教程之实现接口

    Java基础教程之实现接口 在封装与接口中,private关键字封装了对象的内部成员。经过封装,产品隐藏了内部细节...

  • Android面试题准备

    Java相关 1.Java的特性(封装、继承、多态) 封装 1. 封装就是把一个类的内部信息隐藏在类的内部,使得外...

  • JavaSE基础知识学习-----多态

    多态 Java面向对象编程有三大特性:封装,继承和多态封装隐藏类的内部具体实现机制,保护数据,对外界隐藏内部细节,...

  • JAVA

    Java语言的特性 Java的三大特性:封装、继承、多态 封装:隐藏对象的属性和实现细节,仅对外提供公共的访问方式...

  • Android面试宝典 - 技术篇

    一、JAVA 1. Java的三大特性 1.1 封装 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式 封...

  • java基础(1)

    java的三大基本特性 多态、封装、继承 封装: 封装是对于类的封装: 可以彻底隐藏方法的内部实现,仅仅提供一个调...

  • 封装与隐藏

    封装性的体现一、我们将类的属性xxx私有化的同时,提供公共的方法来获取(getxxx)和设置(setxxx)该属性...

  • 封装与隐藏

    封装 问题的引入 封装性的体现 1. 我们将类的属性xxx私有化(private),同时提供公共的(public)...

网友评论

      本文标题:封装与隐藏--java学习第六天

      本文链接:https://www.haomeiwen.com/subject/yjxjhttx.html