龙空技术网

「建议收藏」关于面向对象、封装,还没有见过总结的这么详细的

java架构师阿松 56

前言:

此时各位老铁们对“哪种类成员修饰符修饰的变量只能在本类中被访问”大概比较重视,小伙伴们都需要知道一些“哪种类成员修饰符修饰的变量只能在本类中被访问”的相关内容。那么小编同时在网摘上收集了一些对于“哪种类成员修饰符修饰的变量只能在本类中被访问””的相关内容,希望咱们能喜欢,小伙伴们一起来了解一下吧!

类和对象什么是类

类是一组相关属性和行为的集合,可以看作是一类事物的模板,比如说:无论中年人、老年人还是小孩,都有身高、体重(这是属性),都会吃饭、睡觉(这是行为),那么我们就可以抽取出这些共有的属性和行为,封装为一个类。类由两部分组成:

属性:事物的状态信息行为:事物能够做啥什么是对象

对象是某类事物的具体体现,对象是类的一个实例,比如说:一株蒲公英是植物类的具体实例。

对象和类的关系类是对象的抽象对象是类的具体类的定义格式

修饰符 class关键字 类名{    //成员变量(属性)    //成员方法(行为)}
定义类
public class Student{    String name;//姓名    int age;//年龄    //吃饭    public void eat(){        System.out.println("吃饭");    }}

Student是类名,name和age是成员变量(属性),定义的方式和声明普通变量一样;eat是成员方法(行为)。

创建和使用对象格式

类名 对象名=new 类名();
public static void main(String[] args){    //创建Student类实例    Student s=new Student();    //使用成员变量    System.out.println(s.name);//null    System.out.println(s.age);//0    //调用eat方法    s.eat();}
成员变量的默认值

如果没有对成员变量进行赋值的话,那么将会使用它们的默认值

public class Student {    int age;    float weight;    char sex;    boolean isMan;    String name;    public void eat(){        System.out.println("吃饭");    }    public static void main(String[] args) {        Student s=new Student();        System.out.println(s.age);//0        System.out.println(s.weight);//0.0        System.out.println(s.isMan);//false        System.out.println(s.name);//null        System.out.println(s.sex=='\u0000');//true    }}
局部变量

局部变量在方法内部定义

public class Student {    int age;    public void say(){        //定义局部变量a        int a=1;        System.out.println(a);    }    //形参也是局部变量    public void hel(int a){      System.out.println(a);    }}
成员变量和局部变量的区别在类中的位置不同成员变量定义在类中、方法外局部变量定义在方法中或方法声明上(形参)作用范围不同成员变量作用范围是整个类局部变量的作用范围是它所在的方法
public class Student {    int age;    public void say(){        //定义局部变量a        int a=1;        System.out.println(age);        System.out.println(a);    }    public void hel(){        System.out.println(age);        //System.out.println(a);  无法访问到a    }}

是否有默认值

成员变量有默认值

局部变量没有默认值,必须定义赋值,然后使用

 public void say(){        int a;        //System.out.println(a);  未赋值无法使用    }
在内存的位置成员变量在堆内存中局部变量在栈内存生命周期不同成员变量随着对象的创建而存在,随着对象的消失而消失局部变量随着方法的调用而存在,方法调用完毕它便消失封装概述

封装是指将数据和操作数据的方法绑定起来,对数据的访问只能通过定义的接口。我们在类中编写的方法就是对实现细节的一种封装;我们编写的类就是对数据和数据操作的封装。

封装步骤使用private修饰符将变量修饰为私有变量(只有本类中可以访问)对外提供公有的可以访问私有变量的方法,如getXXX()方法和setXXX()方法

    public class Test1 {        public static void main(String[] args) {            Person p=new Person();            //System.out.println(p.name);  无法直接访问            System.out.println(p.getName());//null 只能通过对外提供的接口进行访问        }    }    class Person{        private String name;        private int age;        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        public int getAge() {            return age;        }        public void setAge(int age) {            this.age = age;        }    }
注意

一个.java文件中可以定义多个类,但是只能有一个类使用public修饰符

this关键字代表正在操作的那个对象,this.name表示该对象的成员变量name,区别于局部变量name

构造方法

我们知道,想要使用对象内的东西,必须要先使用new关键字创建对象,那么它是怎么创建出来的呢?答案就是构造方法,可是我们的类中没有定义构造方法啊?虽然没有定义,但是我们每个类都有一个默认值的无参构造方法,我们在new对象的时候就会调用构造方法。那么我们该如何定义自己的构造方法呢?

格式

  【修饰符】 类名(【参数列表】){    //代码  }
注意点构造方法的名字必须和类名一致构造方法没有返回值(其实是省略了,因为构造方法只能返回本类的类型)一旦自己DIY了构造方法,那么默认的无参构造方法就无效了没有参数列表的是无参构造方法,有参数列表的是有参构造方法我们可以在一个类中定义多个构造方法
   public class Test1 {       public static void main(String[] args) {          //使用无参构造创建对象           Person p1=new Person();           //使用有参构造创建对象           Person p2=new Person("张三");       }   }   class Person{       private String name;       private int age;       //无参构造方法       public Person(){           System.out.println("我是无参构造方法");       }       //我是有参构造方法       public Person(String name){           System.out.println(name);           System.out.println("我是有参构造方法");       }   }

执行结果:

我是无参构造方法

张三>

我是有参构造方法

使用构造实现封装

前面通过编写setXXX方法和getXXX方法以及私有化成员变量实现封装,这里我们通过构造方法实现封装

   class Person{       private String name;       private int age;       //无参构造方法       public Person(){           System.out.println("我是无参构造方法");       }       //我是有参构造方法       public Person(String name,int age){           System.out.println("我是有参构造");           this.name=name;           this.age=age;       }   }   public class Test1 {       public static void main(String[] args) {          //使用无参构造创建对象           Person p1=new Person();           //使用有参构造创建对象           Person p2=new Person("张三",23);       }   }

我们无法访问对象的成员变量(属性),只能通过构造进行访问

JavaBean

JavaBean是java语言编写类的一种标准规范,符合JavaBean`的类必须要满足以下条件:

类必须是具体和公开的(使用public修饰)类必须有无参构造方法(有参构造建议加上)必须要有操作成员变量的setXXX方法和getXXX方法

   class Person{       private String name;       private int age;       //无参构造方法       public Person(){           System.out.println("我是无参构造方法");       }       //我是有参构造方法       public Person(String name,int age){           System.out.println("我是有参构造");           this.name=name;           this.age=age;       }       public String getName() {           return name;       }       public void setName(String name) {           this.name = name;       }       public int getAge() {           return age;       }       public void setAge(int age) {           this.age = age;       }   }
最后

感谢你看到这里,文章有什么不足还请指正,觉得文章对你有帮助的话记得给我点个赞,每天都会分享java相关技术文章或行业资讯,欢迎大家关注和转发文章!

标签: #哪种类成员修饰符修饰的变量只能在本类中被访问