面向对象的封装、java权限修饰符

六、面向对象的封装性

封装性对应的两个方法:setters & getters:(1)、setters(设置类的属性);(2)、getters(获取类的属性)。  //setters为void类型;getetrs有return语句。

常用:将类中属性设置为私有,通过类的getters和setters方法来设置和返回属性

package com.atguigu.cn02;

/*

 *一、面向对象的特性一:封装与隐藏

 *  1、当创建了类的对象以后,如果直接通过"对象.属性"的方式

 *  对相应的对象属性赋值的话,可能会出现不满足实际情况的意外,

 *  我们考虑不让对象来直接作用属性,而是通过"对象.方法"的

 *  形式,来控制对象对属性的访问。实际情况中,对属性的要

 *  求就可以通过方法来实现。

 * 

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

 *

*二、权限修饰符:public private 缺省(不写的话) protected
 *    可以用来修饰属性、方法。
 *
 *     注:1)、权限修饰符从大到小:public protected 缺省(default) private
 *        2)、修饰类的权限有:public 缺省(default)

 * */



public class TestAnimal {

    public static void main(String[] args) {

        Animal animal=new Animal();

       

//      animal.legs=-8; //属性私有化以后不能再用这种形式赋属性值,要用“对象.方法”。

//      animal.name="狗子"; //属性私有化以后不能再用这种形式赋属性值

//      animal.select();

        animal.setLegs(-6);

        animal.eat();

        animal.sleep();

        animal.info();

    }

}



class Animal{

    //private修饰的属性出了类后不能在调用

    private String name;

    private int legs;

   

    public void select() {

        if(legs<0 || name=="null") {

            System.out.println("您好,抱歉输入错误!");

        }

    }

    public void eat(){

        System.out.println("进食");

    }

    public void sleep(){

        System.out.println("休眠");

    }

    public void info() {

        System.out.println("动物:"+name+",有"+legs+"条肢体。");

    }

   

    public void setLegs(int i){

        if(i>0 && i%2==0) {

            legs=i;

        }else {

            System.out.println("您输入的数据有误");

        }

    }

    public int getLegs() {     //获取肢体个数

        return legs;

    }

   

    public void setName(String name) {

        name=name;

    }

    public String getName() {

        return name;

    }

}

七、java权限修饰符(方法或属性前的private、public等等):

如果不写权限修饰符默认为default类型,利用权限修饰符将方法或属性封装起来,需要对外开放的开放出来,私有的保护封装起来。

private类型的方法不能在另一个类中用实例化对象访问。

手动抛出异常:throw new RuntimeException(“提示的信息!”);         //抛出异常后以后的语句将不再执行。

 

1、例题:

代码示例:

1)、Person类

package com.atguigu.cn02;



public class Person {

    String name;

    int age;

    public void setAge(int i) {

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

            age=i;

        }else {

            //如下所示为手动抛出异常代码。

            throw new RuntimeException("您输入的数据有误!");

        }

       

    }

    public int getAge() {

        return age;

    }

    public void setName(String j) {

        name=j;

    }

    public void show() {

        System.out.println(name+"的年龄为:"+age);

    }

}

2)、TestPerson类

package com.atguigu.cn02;



public class TestPerson {

    public static void main(String[] args) {



        Person p1=new Person();

        p1.name="Alice";

        p1.age=78;

        p1.show();

       

        Person p2=new Person();

        p2.setName("Jack");

        p2.setAge(96);

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

        p2.show();

    }

}

 

八、类的成员构造之三:构造器(构造方法)

Person p1=new Person();          //new后面的Person()不是一个类,而时new了后面的一个构造器。

package com.atguigu.cn03;

/*

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

 *

 *构造器的作用:

 *      1)、创建对象;       2)、给创建的对象的属性赋值;

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

 *2、一旦显示的定义了构造器,此时默认的构造器就不再提供。

 *3、如何声明类的构造器,格式:权限修饰符 类名(形参){  ... };

 *4、类的多个构造器间构成重载。

 * * */

public class TestPerson {

    public static void main(String[] args) {

        Person p1=new Person();        //一个构造器,设计类时,若不显示的声明类的构造器的话,程序会默认提供一个空参的构造器。

        System.out.println(p1.getName()+","+p1.getAgea());

        //      String str=new String("atguigu.com");     //系统默认提供的构造器

//      System.out.println(str);

//     

        Person p2=new Person("hh");

        System.out.println(p2.getName());

       

       

    }

}

class Person{

    private String name;

    private int age;

   

    //以下四个为创建的四个构造器

    public Person(String n){

        name=n;

    }

    public Person(){

        age=20;

        name="张三";

    }

    public Person(int a){

        age=a;

    }

    public Person(String n,int a){

        name=n;

        age=a;

    }

   

    public void setName(String n) {

        name=n;

    }

    public void setAge(int a) {

        age=a;

    }

    public String getName() {

        return name;

    }

    public int getAgea() {

        return age;

    }

}

猜你喜欢

转载自blog.csdn.net/qq_39044046/article/details/92803087