java学习笔记5:面向对象思想、类与对象、成员变量和局部变量、封装

一、面向对象的思想
当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了。这时就开始思索,能不能把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面向对象的思想。
特点:
1、是一种更符合我们思想习惯的思想
2、可以将复杂的事情简单化
3、将我们从执行者变成了指挥者,角色发生了转换
二、类与对象
1、类是我们Java中最小的单位,他体现了一种封装的思想,封装了成员变量(属性)和成员方法(功能),是一组相关的属性和行为的集合。对象则是该类事物的具体体现。
例如:
类 :学生
对象: 班长就是一个对象(一个具体的对象)
2、成员变量和成员方法
成员变量:和定义变量是一样的,只不过位置发生了改变。在类中,方法外。
成员方法:和定义方法是一样的,只不过把static去掉。
3、创建格式
对象:类名 对象名 = new 类名();
成员变量:对象名.变量名;
成员方法:对象名.方法名;
4、举例
完成一个Student类并测试

public class MyTest {
    public static void main(String[] args) {
      Student student=new Student();
      //给成员变量赋值
      student.name="张三";
      student.age=20;
      student.sex='男';
      System.out.println(student.name);
      System.out.println(student.age);
      System.out.println(student.sex);
      student.eat();
      student.sleep();
      student.palyGame();
   }
}
class Student { //定义了一个学生类
    //定义成员变量
    String name;
    int age;
    char sex;
    //成员方法
    public void eat() {
        System.out.println("吃饭");
    }
    public void sleep() {
        System.out.println("睡觉");
    }
    public void palyGame() {
        System.out.println("打豆豆");
    }

}
输出:张三
      20
      男
      吃饭
      睡觉
      打豆豆  

注意:一般在一个java文件中写两个类:一个基本的类(Student),一个测试类(MyTest)。一个java文件中可以定义两个类,但是只能有一个类型是public的
三、成员变量与局部变量的区别
1、在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
2、在内存中的位置不同
成员变量:在堆内存
局部变量:在栈内存
3、生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
4、初始化值不同
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
注意事项:局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
四、封装
1、封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
2、封装好处
①、隐藏实现细节,提供公共的访问方式
②、提高了代码的复用性
③、提高安全性。
3、原则
将不需要对外提供的内容都隐藏起来。把属性隐藏,提供公共方法对其访问。
4、private关键字
①、是一个权限修饰符
②、可以修饰成员变量和成员方法
③、被其修饰的成员只能在本类中被访问
5、this关键字
①、为什么要有this:当我们的局部变量和成员变量相同的时候,如果我们不使用this关键字,那么会导致一个问题:就是局部变量隐藏了成员变量的问题。
②、特点:是当前类的对象引用。简单的记,它就代表当前类的一个对象。谁调用这个方法,那么该方法的内部的this就代表谁
③、this的应用场景:解决局部变量隐藏成员变量。
6、举例:使用封装建立一个学生类(使用private和this关键字)

public class MyTest {
    public static void main(String[] args) {
        Student student = new Student();
        //调用set方法给成员变量设置值
        student.setName("张三");
        student.setAge(18);
        String name = student.getName();
        int age = student.getAge();
        System.out.println("姓名: "+name+"---年龄:"+age);
        }
     }
        public class Student {
         //private 权限修饰符 私有的,可以修饰成员变量和成员方法,被修饰的成员只能在本类中访问
         //私有化成员变量
        private String name;
        private int age;
        //提供公共的get set 方法
        public void setName(String name){
           this.name=name;
        }
        public void setAge(int age){
          this.age=age;
        }  
        public String getName(){
          return name;
        }
        public int getAge(){
         return age;
        }
    }
    输出:
    姓名:张三---年龄:18
发布了24 篇原创文章 · 获赞 11 · 访问量 2063

猜你喜欢

转载自blog.csdn.net/weixin_43791069/article/details/84949061