喧啸

导航

面向对象(上)--3

一、面向对象的特征—封装和隐藏

  1、封装性的理解

    隐藏对象内部的复杂性,之对外公布简单的接口。便于外界调用,从而提高系统的可扩展性,可维护性。

    换句话说:把该隐藏的隐藏起来,该暴露的暴露出来。

  2、封装性的体现

    1.将类的属性私有化,同时提供公共的方法来获取或设置;

    2.不对外暴露私有化方法

    3.单例模式

  3、封装性的体现—权限修饰符

    1.4种权限修饰符(从小到大):private,缺省,protect,public

    2.权限修饰符的作用域

  private 缺省 protected public
类内部 YES YES YES YES
同一个包   YES YES YES
不同包的子类     YES YES
同一个工程       YES

    3.4种权限修饰符可以修饰类的内部结构:属性、方法、构造器、内部类

    4.修饰类:只能用缺省,public

  4、总结

    Java提供了4种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性大小。

  5、练习题

package com.xuanxiao.zhaoyi;

/*
 * 创建程序,在其中定义两个类,Person和PersonTest类。
 * Person类中包含属性age和方法setAge()、setAge(),用setAge()来设置人的年龄信息(0-130),用setAge()返回人的年龄。
 * 在PersonTest类中实例化一个对象p,调用方法体现类的封装性。
 */

public class PersonTest {
    public static void main(String[] args) {
        Person p = new Person();
        //p.age = 13;
        //p.setAge(139);
        p.setAge(18);
        System.out.println(p.getAge());
    }
}
package com.xuanxiao.zhaoyi;

public class Person {
    private int age;
    
    public void setAge(int i) {
        if(i < 0 || i > 130) {
            System.out.println("输入信息不符号实际要求");
        }else {
            age = i;
        }
    }
    
    public int getAge() {
        return age;
    }
}

 

二、构造器

  1、作用

    创建对象

    初始化对象的属性

  2、说明

    1、如果没有显示的定义构造器的话,泽西用默认提供一个空参的构造器。

    2、定义构造器的格式:

      权限修饰符 类名(形参列表) { }

    3、一个类中定义的多个构造器,彼此构成重载。

    4、一旦显示的定义构造器之后,彼此构成重载。

    5、一个类中,至少会有一个构造器。

  3、练习题

package com.xuanxiao.zhaoyi;

/*
 * 创建程序,在其中定义两个类,Person和PersonTest类。
 * Person类中包含属性age和方法setAge()、setAge(),用setAge()来设置人的年龄信息(0-130),用setAge()返回人的年龄。
 * 在PersonTest类中实例化一个对象p,调用方法体现类的封装性。
 * 
 * 在Person类中添加构造器,利用构造器设置所有人的age的属性初始化值为18。
 * 修改上述类和构造器,增加name属性,使得每次创建Person对象的同时初始化对象的age属性值和name属性值。
 * 
 */

public class PersonTest {
    public static void main(String[] args) {
        Person p = new Person("Jack",18);
        //p.age = 13;
        //p.setAge(139);
        //p.setAge(12);
        System.out.println("name:" + p.getName() + "\tage:" + p.getAge());
    }
}
package com.xuanxiao.zhaoyi;

public class Person {
    private int age;
    private String name;
    
    public Person() {
        age = 18;
    }
    
    public Person(String n,int i) {
        age = i;
        name = n;
    }
    
    public void setAge(int i) {
        if(i < 0 || i > 130) {
            System.out.println("输入信息不符号实际要求");
        }else {
            age = i;
        }
    }
    
    public int getAge() {
        return age;
    }
    
    public void setName(String n) {
        name = n;
    }
    
    public String getName() {
        return name;
    }
}

 三、属性赋值的过程

  1、属性赋值的过程

    (1)默认初始化

    (2)显示初始化

    (3)构造器中初始化

    (4)通过“对象.方法” 或者 “对象.属性” 的方法赋值

  2、属性赋值的先后顺序

    (1)-(2)-(3)-(4)

四、JavaBean

  JavaBean是一种Java语言写成的可重用组件。

  解释:

    类是公开的

    有一个无参的公共构造器

    有属性,且有对应的 get , set 方法

 

posted on 2020-11-05 22:01  喧啸  阅读(48)  评论(0编辑  收藏  举报