JAVA封装

单词 说明
this 这,这个
static 静态的
overloaded 重载,超载
overloaded method 方法重载
public 公共的
private 私有的

一、什么是封装

        封装就是隐藏实现细节,将属性私有化,提供共有方法访问私有属性。

        封装可以实现:

  • 修改属性的可见性来限制对属性的访问。
  • 为每个属性创建一对赋值(setter)方法和取值(getter) 方法,用于对这些属性的访问。
  • 在setter和getter方法中,加入对属性的存取限制。

  • 使用private关键字封装私有属性。

二、构造方法

        构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值。

        构造方法必须同时满足方法名和类名相同没有返回值这两个条件。

        使用new关键字调用构造方法:

        通过带参数的构造方法,显式地为实例变量赋予初始值:

        通过调用带参数的构造方法,简化对象初始化的代码:

三、方法地重载

        重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

        每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

        最常用的地方就是构造器的重载。

public class Overloading {
    public int test(){
        System.out.println("test1");
        return 1;
    }
 
    public void test(int a){
        System.out.println("test2");
    }   
 
    //以下两个参数类型顺序不同
    public String test(int a,String s){
        System.out.println("test3");
        return "returntest3";
    }   
 
    public String test(String s,int a){
        System.out.println("test4");
        return "returntest4";
    }   
 
    public static void main(String[] args){
        Overloading o = new Overloading();
        System.out.println(o.test());
        o.test(1);
        System.out.println(o.test(1,"test3"));
        System.out.println(o.test("test4",1));
    }
}

        构造方法重载是方法重载的典型示例:

 四、this关键字

         每个对象都有自己独立的数据成员, 但是所有的对象共享成员方法。每个成员方法都有一个隐含的this引用,它总是指向调用它的对象。关键字this给出用于调用成员方法的对象的地址,每当调用成员方法时,编译器会向this分配调用该方法的对象的地址,可以像使用任何引用那样使用this。

五、静态成员变量

        在成员变量前加static关键字,可以将其声明为静态成员变量。如果类中成员变量被定义为静态,那么不论有多少个对象,静态成员变量只有一份内存拷贝,即所有对象 共享该成员变量。静态成员变量的作用域只在类内部,但其生命周期却贯穿整个程序。

class Dog
{
    public static int count = 0; //静态成员变量

    public Dog() //构造方法
    {
        count++;
    }
}

public class Test
{
    public static void main(String[] args)
    {
        System.out.println("当前狗的数量是:" + Dog.count);
        Dog d1 = new Dog();
        Dog d2 = new Dog();
        System.out.println("当前狗的数量是:" + Dog.count);
    }
}

        静态成员变量和程序同生命周期,在没有实例化对象时,可以通过类名访问静态成员变量。也可以通过对象访问静态成员变量,但不论使用的是哪个对象,访问到的都是同一个变量。静态成员变量在声明时最好初始化,如果不进行初始化,系统会默认初始化为初始值。

六、静态成员方法

        在成员方法前加static关键字,可以将其声明为静态成员方法。

        静态成员方法只能对类的静态成员变量进行操作。

        静态成员方法没有this引用。

        在没有实例化对象时,可以通过类名访问静态成员方法。

class Dog {
    private static int count = 0; //静态成员变量
    public Dog() {
        count++;
    }
    //显示数量的方法,静态成员方法
    public static void displayCount() {
        System.out.println("当前狗的数量是:" + count);
    }
}

public class Test {
    public static void main(String[] args) {
        //没有实例化对象之前,直接通过类名调用静态成员方法
        Dog.displayCount();
        Dog d1 = new Dog();
        Dog d2 = new Dog();
        Dog.displayCount();
    }
}

        

  • 静态成员包括静态成员属性和静态成员方法。
  • 静态成员属于整个类而不是属于某个对象,它被该类的所有对象共享。
  • 访问静态成员时一般通过类名访问,也可以通过对象访问。
  • 静态成员也受访问权限的约束。
  • 静态数据成员在使用之前应尽量初始化。
  • 静态成员方法不能操作非静态成员。
  • 静态成员方法没有this引用。

结束!

原文地址:https://www.cnblogs.com/aaronthon/p/13331539.html