> 文档中心 > Java中的面向对象特征之封装

Java中的面向对象特征之封装

目录

  • 作者介绍
  • 前言
  • 一、面向对象是什么?
  • 二、类和对象是什么?
    • 1、类和对象
    • 2、类的介绍
    • 3、类和对象的关系
    • 4、类的组成
    • 5、对象
      • 🐘创建对象
      • 🐘使用对象属性(成员变量
        • ⭐代码演示
      • 🐘使用对象属性(成员方法
        • ⭐代码演示1(无参成员方法)
        • ⭐代码演示2(带参成员方法)
  • 三、权限修饰符
    • 1、权限修饰符介绍
    • 2、权限修饰符总结
  • 四、成员变量和局部变量的区别
  • 五、this关键字
    • 1、为什么要使用this?
    • 2、this关键字介绍
        • ⭐代码演示
  • 六、 构造方法
    • 1、什么是构造方法?
    • 2、构造方法格式
    • 3、构造方法执行的时机
    • 4、构造方法的作用
    • 5、构造方法的注意事项
    • 6、无参构造和带参构造方法的使用
        • ⭐代码演示
    • 7、构造方法生成的快捷键
    • 8、setXxx/getXxx方法生成快捷键
    • 9、set方法和带参构造方法都可以为成员变量赋值,有什么区别?
  • 七、封装
    • 1、什么是封装?
    • 2、封装在代码中的常见体现
    • 3、封装小结
    • 4、标准的封装例子
  • 作者:KJ.JK

作者介绍

 ⭐ 作者简介:KJ.JK,CSDNJava领域新星作者 ⭐ 参加获奖过蓝桥杯、中国软件杯云计算、互联网+、创新创业大赛银奖 ⭐ 力扣、洛谷、牛客网、Vijos3000道刷题记录 ⭐ 欢迎大家 点赞👍 收藏💖 关注🔒

前言

    本文介绍JavaEE中的面向对象内容,包括什么是对象,怎么创建对象,构造方法使用详情,面向对象的封装特性,成员变量和局部变量的局部,以及this关键字用法,话不多说,直接上代码!!!!💪💪💪

一、面向对象是什么?

     面向对象: 一种编程思想------------------------------------------------------------------------------------------------------------------------------------------为什么要学?  因为这套思想来自生活,生活解决问题,就是一个个的对象在一起打交道,从而将问题解决  我们写代码的时候,如果也使用这种思想,编程就会更加贴近生活------------------------------------------------------------------------------------------------------------------------------------------学什么:1.学习自己如何设计对象2.学习已有的对象怎么使用

二、类和对象是什么?


1、类和对象

    Java中想要创建对象,必须要先有类的存在

2、类的介绍

      什么是类:一组相关属性和行为的集合,将其看做是一张对象的设计图 类的特点: 1、类是对象的数据类型     2、类是具有相同属性和行为的一组对象的集合

3、类和对象的关系

 *类:是对现实生活中一种具有共同属性和行为的事物的抽象 *对象:是可以看的到摸得着的真实存在的实体关系: 类是对象的设计图,需要根据类去创建对象数量关系:一对多的关系,根据一个类,创建出多个对象 

4、类的组成

      类的组成(属性和行为):--> 设计图 --> 描述一件生活中的事物  如:      学生: class Student{}      老师: class Teacher{}      手机: class  Phone{}------------------------------------------------------------------------------------------------------------------------------------------      类当中写什么? 属性(名词):    在代码中使用成员变量表示,成员变量和之前定义的变量一样,只不过位置在方法外    如:public class Phone {String brand;    //方法外面的 成员变量    int prices;行为(动词):在代码中使用成员方法表示,成员方法和之前定义的方法一样,只不过不要 "static" 关键字    如:   public void call() { //成员方法      System.out.println("打电话");      }    }

5、对象


🐘创建对象

   格式:  类名 对象名  = new 类名();     范例:  Student stu =new Student();

🐘使用对象属性(成员变量)

      格式:    对象名.变量名; 范例: 会结合打印,赋值使用     如:   1.取出成员变量并打印System.out.println(stu.name);  //null   字符串默认nullSystem.out.println(stu.age);   //0      整数默认0    2.访问成员变量并赋值  stu.name="张三";  stu.age=20;  

⭐代码演示

//对象类public class Student {//属性:    String  name;    int age ;//行为:    public  void  study(){ System.out.println("学生学习...");    }    public  void eat(){ System.out.println("学生吃饭...");    }}

//测试类public class StudentTest {    public static void main(String[] args) { Student stu =new Student();  //对象名.变量名; //取出成员变量并打印 System.out.println(stu.name);  //null   字符串默认null System.out.println(stu.age);   //0      整数默认0 System.out.println("-------------------------"); //访问成员变量并赋值 stu.name="张三"; stu.age=20; System.out.println(stu.name);   //张三 System.out.println(stu.age);    // 20    }}

Java中的面向对象特征之封装


扩展:打印对象名得到的是全类名

Student stu =new Student();System.out.println(stu);   //Ooptest.Student@b4c966a   全类名@十六进制地址值      //@b4c966a这个是这个对象在堆内存当中的内存地址

Java中的面向对象特征之封装


🐘使用对象属性(成员方法)

      格式:对象名.方法名(实际参数)   范例:     stu.study();   //调用对象中的成员方法    stu.eat();   ------------------------------------------------------------------------------------------------------------------------------------------    扩展:      "成员方法的定义格式":格式:public void 方法名(){ //方法体   }     范例: public void show(){     ....    }

⭐代码演示1(无参成员方法)


//对象类public class Student {//无参成员方法:    public  void  study(){ System.out.println("学生学习...");    }    public  void eat(){ System.out.println("学生吃饭...");    }}

//测试类public class StudentTest {    public static void main(String[] args) { Student stu =new Student();      //调用对象中的成员方法 stu.study(); stu.eat();    }}

Java中的面向对象特征之封装


⭐代码演示2(带参成员方法)

//对象类public class Phone {//带参成员方法:    public  void call(String name){ System.out.println("给"+name+"打电话");    }    public  void sendMessage(String name){ System.out.println("给"+name+"发信息");    }}

//测试类public class PhoneTest {    public static void main(String[] args) {     Phone p= new Phone(); p.call("张三"); p.sendMessage("李四");    }}

Java中的面向对象特征之封装


三、权限修饰符


1、权限修饰符介绍

 权限修饰符(成员)private: 在同一个类中访问default(默认): 在同一个类中,同一个包下protected:在同一个类中,同一个包下,不同包的子类public:任意位置访问

Java中的面向对象特征之封装


2、权限修饰符总结

 * 成员变量一般私有 * 类、方法、构造器一般公开 * 如果该成员只希望本类访问,使用private修饰 * 如果该成员只希望在本包和子类中访问,使用protected修饰  * 如果该成员只希望在本包中访问,使用缺省(默认不写)修饰符 * 常用的权限修饰符是publicprivate  * public通常用于修饰类和方法, private用于修饰成员变量

四、成员变量和局部变量的区别

      区别      成员变量     局部变量(不能加修饰符)类中位置不同   方法外      方法里面 初始化值不同     有默认初始化值    没有默认初始化值,使用前必须完成赋值  内存位置不同    堆内存(变量在堆内存开空间) "栈内存" (因为局部变量是在方法里面,而方法是需要被JVM调 用,进去栈内存执行的,所以在栈内存里面)生命周期不同      随着对象的创建而存在,随着对象的消失而消失     随着方法的调用而存在,随着方法的弹栈而消失   作用域不同    都是在自己所在的大括号中   例子:  public class Student{public void setName(String name){    String name;    name="张三";    int age;     }}   

五、this关键字


1、为什么要使用this?

当局部变量和成员变量出现了重名问题,Java会根据就近原则,优先使用局部变量非要使用成员变量的话,可以使用this关键字进行区分

2、this关键字介绍

      this: 代表当前"类对象"的引用(地址)      //就是当前类对象的地址值   哪一个对象调用的thisthis就代表哪一个对象如:下面的两个this是不一样的:    Phone p1=new Phone();    System.out.println("打印p1对象名----->"+p1);  //打印p1对象名----->mythis.Phone@34a245ab(这个是p1地址值)    p1.show();     //this打印出来的也是p1的地址值    Phone p2=new Phone();    System.out.println("打印p2对象名----->"+p2);  //打印p2对象名----->mythis.Phone@7cc355be(这个是p2地址值)    p2.show();    //this打印出来的也是p2的地址值

⭐代码演示

//对象类class Phone{    public  void show(){ System.out.println(this);    }}

//测试类public class PhoneTest {    public static void main(String[] args) { Phone p1=new Phone(); System.out.println("打印p1对象名----->"+p1);  //打印p1对象名----->mythis.Phone@34a245ab p1.show(); System.out.println("-------------------------"); Phone p2=new Phone(); System.out.println("打印p2对象名----->"+p2); p2.show();    }}

Java中的面向对象特征之封装


六、 构造方法


1、什么是构造方法?

介绍: 构建,创造对象的时候要执行的方法

2、构造方法格式

 格式:   1. 方法名与类名相同,大小写也要一致  2.没有返回值类型,void都没有  3.没有具体的返回值(不能由retrun带回结果数据)     例子:     public Student(){ System.out.println("这是一个无参构造方法");}public  Student(String name,int age){   this.name=name;     this.age=age;   System.out.println("这是一个带参构造方法");     }    

3、构造方法执行的时机

   执行时机:   1. 在创建对象的时候,被系统自动调用执行2. 每创建一次,就会执行一次构造方法 3. 不能手动调用构造方法

4、构造方法的作用

      1.本质的作用:用于创建对象     2.结合执行时机产生的作用: 可以在创建对象的时候,给成员变量初始化 如: Student stu=new Student("张三",23);   //创建对象的时候,给成员变量初始化 System.out.println(stu.name+"---"+stu.age);

5、构造方法的注意事项

    1. 一个类中如果没有写任何的构造方法,系统将给出一个[默认的][无参数的]构造方法,保证你可以创建对象    2. 一旦手动给出了构造方法,系统将不会提供默认的构造方法了,这个时候就必须要赋值了    3.构造方法也是方法,允许重载关系出现    4.构造方法不允许手动调用,只有在new 对象的时候执行      这样子是不行的:  stu.Student(); // 建议:无参构造方法,和带参数构造方法,都自己手动给出

6、无参构造和带参构造方法的使用

  1.无参构造方法创建对象,通过setXxx方法赋值  如:StudentTestD  stu =new StudentTestD();stu.setAge(23);stu.setName("张三");stu.show();------------------------------------------------------------------------------------------------------------------------------------------     2.带参构造方法创建对象,在创建对象时直接赋值      如:     StudentTestD stu1=new StudentTestD("李四",20);  //输入的顺序和你在构造方法写的顺序一样     stu1.show();

⭐代码演示

//对象类public class StudentTestD {    private  String name;    private  int age;    public  void show(){ System.out.println("姓名"+name+",年龄为:"+age);    }    public  StudentTestD(){    }    public  StudentTestD(String name,int age){ 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;    }}

public class StudentTestDemo {    public static void main(String[] args) { //1.无参构造方法创建对象,通过setXxx方法赋值 StudentTestD  stu =new StudentTestD(); stu.setAge(23); stu.setName("张三"); stu.show(); System.out.println("------------------------------");//2.带参构造方法创建对象,在创建对象时直接赋值 StudentTestD stu1=new StudentTestD("李四",20);  //输入的顺序和你在构造方法写的顺序一样 stu1.show();    }}

Java中的面向对象特征之封装


7、构造方法生成的快捷键


第一步
Java中的面向对象特征之封装


第二步
Java中的面向对象特征之封装


第三步
Java中的面向对象特征之封装


8、setXxx/getXxx方法生成快捷键


第一步
Java中的面向对象特征之封装


第二步
Java中的面向对象特征之封装


9、set方法和带参构造方法都可以为成员变量赋值,有什么区别?

 带参构造方法只能在创建对象的时候,完成一次赋值  set方法可以多次调用,反复去修改对象的属性的值

七、封装


1、什么是封装?

    隐藏实现细节,仅对外暴露公共的访问方式

2、封装在代码中的常见体现


Java中的面向对象特征之封装


Java中的面向对象特征之封装


3、封装小结

*隐藏实现细节,仅对外暴露公共的访问方式将属性抽取到"类",这是"对数据"的一种"封装"   将代码抽取到"方法",这是"对代码"功能的一种"封装"    

4、标准的封装例子

//对象类public class Student {    private  int age;    public void setAge(int age){ if(age>=0&&age<=100){     this.age=age; }else {     System.out.println("方法有错"); }    }    public int getAge(){ return  age;    }}

public class StudentTest {    /*   标准的JavaBean :      1.所有的成员变量 使用 private 修饰      2.提供【空参】【带参】构造方法      3.针对于私有的成员变量,提供: setXxx \ getXxx方法 set: 设置\赋值 get: 获取      情况: 成员变量,没有进行数据的安全校验      有可能记录到一些错误的数据,如负数的年龄      解决:      1.成员变量私有化    错误的数据进不来了,但同时,正确的数据也进不来了      2.提供对应的set\get 方法     */    public static void main(String[] args) { Student stu=new Student(); stu.setAge(20); System.out.println(stu.getAge());    }}

Java中的面向对象特征之封装


作者:KJ.JK

文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

家庭教育网