Java_类与对象03_封装和private、this、super、static关键字

A    封装:类中的成员变量为private(私有),为私有的成员变量提供公有的get()set()。

  封装的好处:

    i.      隐藏实现细节,提供共有的访问方式

    ii.     提高了代码的复用性

    iii.    提高安全性

  封装的原则(思想):

    i.      将不需要对外提供的内容隐藏起来

    ii.     把属性隐藏,提供公共方法对其访问

  封装的体现:private是封装的一种体现。

B    private:

  i.      是一个权限修饰符

  ii.     可以修饰成员(成员变量和成员方法)

  iii.    被private修饰的成员只能在本类中被访问

C     this关键字: 代表当前类的对象引用。

  引用当前类中的成员变量成员方法

    private String name;

    public static void main(String[] args) {
        this.name = "zhangsan"; // 错误,主方法是静态的,不能使用this关键字。
    }

    public String getName() {
        return name; // 这里其实是隐含了this
    }

D    super关键字:代表父类存储空间的标识。(可以理解为父类的引用,通过这个东西可以访问父类的成员)

E    static关键字:

  1.    可以修饰成员变量成员方法静态的成员可以直接使用类名(接口名)直接调用,也可以通过类的对象调用。

    修饰成员变量:静态变量

      i.      类所有的对象共用一份静态变量。

      ii.     静态变量只在第一次使用类时初始化,从第二次使用类时不再进行初始化。

    修饰成员方法:静态方法。

      i.      静态方法不能使用this与super关键字

      ii.    静态方法只能直接调用当前类中静态的成员。想要调用非静态成员必须通过类的对象调用(因为静态方法不接受隐含的this)。

              private String name;

              static String num;

          静态方法的直接调用:

            调用静态成员:

                  Test.num = "";    // 通过类名调用

                  // this.num = "";  // 错误,static修饰的成员方法(即静态方法)不能使用this与super关键字

                  num = "";      // 是否相当于Test.num = "";

                  也可通过类的对象调用

            调用非静态成员:

                  // this.name = "";         // 错误,static修饰的成员方法不能使用this与super关键字

                  // Test.name = "";        // 错误,name不是静态的

                  // name = "";                // 错误,name不是静态的,因此相当于this.name

                  只能通过类的对象调用

          非静态方法的直接调用:

            调用静态成员:

                  Test.num = "";

                  this.num = ""; //原理 好像 与上面的相同,this:是当前类的对象引用

                  num = "";       //调用方式和静态方法直接调用的原理相同

                  也可通过类的对象调用

            调用非静态成员

                  Test.name = "";    //错误,只有静态成员才可以用类名(接口名)调用

                  name = "";     //相当于this.name = "";

                  也可通过类的对象调用

      iii.   非静态的方法可以直接调用静态的成员。

  2.     静态的特点:

      A:随着类的加载而加载

      B:优先与对象存在

      C:被类的所有对象共享

      D:可以通过类名调用:

      既可以通过对象名调用,也可以通过类名调用,建议通过类名调用。

  3.     静态的内存图:静态的内容在方法区的静态区

  4.     静态的注意事项;

      A:在静态方法中没有this对象

      B:静态只能访问静态(代码测试过)

  5.     静态变量和成员变量的区别

      A:所属不同

        静态变量:属于类,类变量

        成员变量:属于对象,对象变量,实例变量

      B:内存位置不同

        静态变量:方法区的静态区

        成员变量:堆内存

      C:生命周期不同

        静态变量:静态变量是随着类的加载而加载,随着类的消失而消失

        成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失

      D:调用不同

        静态变量:可以通过对象名调用,也可以通过类名调用

        成员变量:只能通过对象名调用

原文地址:https://www.cnblogs.com/zhaolanqi/p/9234612.html

时间: 2024-09-30 17:17:40

Java_类与对象03_封装和private、this、super、static关键字的相关文章

JAVA实验4 类与对象(封装继承多态等机制的使用)

实验四 类与对象(封装.继承.多态等机制的使用) 实验内容: 1. 编写一个名为TwoDimensionalShape的抽象类,拥有属性area和circumference表示面积和周长,以及抽象方法getArea()和getCircumference(),用于获取面积和周长. 2. 编写Printable接口,包括一个抽象方法printShapeInfo,用于输出图形信息. 3. 分别编写Rectangle.Triangle.Circular三个类,用于描述矩形.三角形和圆形,要求继承于Two

07_面向对象(成员变量和局部变量区别、类作为形式参数的问题、匿名对象、封装、private关键字、this关键字、构造方法、成员方法、static关键字、静态变量和成员变量、main方法)_02

7:构造方法(掌握)    (1)作用:用于对对象的数据进行初始化    (2)格式:        A:方法名和类名相同        B:没有返回值类型,连void都不能有        C:没有返回值                思考题:构造方法中可不可以有return语句呢?        可以.而是我们写成这个样子就OK了:return;        其实,在任何的void类型的方法的最后你都可以写上:return;    (3)构造方法的注意事项        A:如果我们没写构

类和对象、封装、继承、多态

? 类和对象 ? 类和对象的概念 类:客观存在的,抽象的,概念的东西.一个类可以被定义为描述行为的模板: 对象:对象是具体的,实际的,代表一个事物.对象具有状态和行为. 类是对象的模板,对象是类的一个具体实体. 定义Java中的类 一个类可以包含以下任意变量类型. a)局部变量: 方法里面,构造函数或块中定义的变量称为局部变量.该变量将被声明和初始化的方法中,当该方法完成该变量将被销毁. b)实例变量: 实例变量都在一个类,但任何方法之外的变量.这些变量在类被加载的实例化.实例变量可以从内部的任

黑马程序员-Java基础-面向对象-类和对象、封装、构造函数、this、static、饿汉式&懒汉式

第一讲  面向对象概念 1.  定义 相对于与面向过程而言的,将功能封装进对象,我们只关心具备了该功能的对象,而不用关注对象的具体细节. 面向对象的特点:使复杂问题简单化.我们只关心什么对象能处理什么事情,而不用关心具体的实现细节. 2.  面向对象特征 封装.继承.多态. 第二讲  类和对象的关系 1.  概述 类就是:对现实生活中事物的描述,可以是实体的事物也可以是一件事等: 对象是:是某类事物的实例,实实在在存在的个体: 映射到java中,描述就是class定义的类. 具体对象就是对应ja

Java_类和对象(完美总结)_转载

转载自海子:http://www.cnblogs.com/dolphin0520/p/3803432.html Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知识.首先,我们讲述一下与类的初始化相关的东西,然后再从几个方面阐述继承这一大特性.以下是本文的目录大纲: 一.你了解类吗? 二.你了解继承吗? 三.常见的面试笔试题 若有不正之处,请多多谅

Java_类与对象13_小练习

一. 1:局部变量和成员变量的区别? A:在类中位置不同 B:在内存中位置不同 C:生命周期不同 D:初始化值不同 2:形式参数分别为基本类型和引用类型的问题? 形式参数:基本类型 形参的改变不影响实际参数 形式参数:引用类型 形参的改变直接影响实际参数 如果一个方法的形式参数是一个类的名称,那么这里需要的是该类的对象. 3:匿名对象是什么?应用场景是什么? 没有名字的对象. 应用场景: A:调用方法,仅仅调用一次的时候 B:作为实际参数传递 4:封装是什么?java中封装的体现有哪些?请举例说

java第2天:类,对象,封装和构造方法

1 面向对象简述 将 {1,3,45,56,78,90}转化为[1,3,45,56,78,90] 1-2 方法1:面向过程 代码块 public class test { public static void main(String[] args) { int[] array = {1,3,45,56,78,90}; // 打印成[1,3,45,56,78,90] System.out.print("["); for (int i = 0; i < array.length; i

Java_类与对象08_形式参数和返回值的问题

1.     形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 案例一: 案例二: 案例三: 2.     返回值类型: 类名:返回的是该类的对象 抽象类名:返回的是该类的子类对象 接口名:返回的是该接口的实现类的对象 案例一: 案例二: 案例三: 3.     链式编程 对象.方法1().方法2().......方法n(); 这种用法:其实在方法1()调用完毕后,应该一个对象: 方法2()调用完毕后,应该返回一个对象. 方法n()调用完毕后,可能是

类和对象;封装

属性(特征)与行为(方法) 类:现实生活中对象的抽象,抽象的数据类型 对象:类的实例化 封装:将对象的属性和行为组合成为一个独立的单位或不见,并尽可能i隐藏对象内部细节,只保留必要的对外接口,使之与外部发生联系 软件包:把多个类收集在一起成为一组 封装的优点:隐藏隐私.隐藏实现细节.方便加入控制(约束条件).可重用性. 实现封装: 步骤:1.修改属性的可见性 2.创建访问属性的方法 3.在访问属性的方法中加入控制语句 不同范围: public::可以被本类和其他任何类的方法访问 protecte