理解面向对象编程-封装

本文详细介绍了面向对象编程(OOP)中的核心概念——封装,通过使用private关键字实现数据隐藏,并通过getter和setter方法进行访问。同时,解释了构造方法的作用,包括无参构造方法的自动生成以及构造方法的重载。此外,还阐述了this关键字的用途,如在方法调用和访问成员变量时的应用。示例代码展示了在Java中如何实现这些概念。
摘要由CSDN通过智能技术生成

OOP思想(Object Oriented Programming)即为面向对象编程,其特征为:

  1. 封装

  2. 继承

  3. 多态

封装

  • 使用关键字private来修饰成员变量或者成员方法,一旦被这个关键字修饰,就不能在类外进行访问了,然后统一提供对应的getter和setter方法。

  • 封装的本质就是让类的调用者不必清楚地了解类的实现者是如何实现类的,只要知道如何使用类就行了。这样就降低了类调用者的学习和使用成本,从而降低了复杂程度。

构造方法

  • 构造方法是在实例化对象时自动被调用的特殊方法,用于完成初始化操作。

  • 没有返回值,方法名和类名相同,每个类中一定至少存在一个构造方法。(当一个类没有提供构造方法时,系统会自动生成一个不带有参数的构造方法。)

构造方法的语法:方法名 (形参) {

                             }

注意:

  • 如果类中定义了构造方法,那么默认的无参数的构造方法不再生成

  • 构造方法支持重载,规则和普通方法的重载一致

this关键字

this代表当前对象的引用,它的使用:

  1. this.data    访问成员变量

  2. this.func()  调用成员方法

  3. this()          调用构造方法(必须放在第一行进行显示,只能调用一个)

如:

 class Student {
     private String name;
     private int age;
     private String sex;
     private static int count;
     
     //构造方法
     public Student() {
         this("zhangsan");//调用构造方法放在第一行
         System.out.println("不带参数的构造方法");
     }
     public Student(String name) {
         this.name = name;
         System.out.println("带有1个参数的构造方法");
     }
     public Student(String name, int age, String sex) {
         this.name = name;
         this.age = age;
         this.sex = sex;
         System.out.println("带有3个参数的构造方法");
     }
     
     //getter和setter方法
     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 String getSex() {
         return sex;
     }
 ​
     public void setSex(String sex) {
         this.sex = sex;
     }
     //成员方法
     public void eat() {
         System.out.println(name + " eat()");
     }
 ​
     public void sleep() {
         this.eat();
         System.out.println(this.name+"sleep()!");
     }
 ​
     //静态方法内部不能用this
     public static void staticFunc() {
         //System.out.println(this.age);
     }
 ​
     @Override
     public String toString() {
         return "Student{" +
                 "name='" + name + '\'' +
                 ", age=" + age +
                 ", sex='" + sex + '\'' +
                 '}';
     }
 }

实例化一个对象分为2步:

  1. 为对象分配内存

  2. 调用合适的构造方法(意味着构造方法不止一个)

如:

 public class Test {
     public static void main(String[] args) {
         Student stu = new Student("zhangsan" );//调用了带有一个参数的构造方法
         Student stu2 = new Student();//调用了不带有参数的构造方法
     }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值