zoukankan      html  css  js  c++  java
  • 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引用。

    结束!

  • 相关阅读:
    C# 使用HtmlAgilityPack抓取网页信息
    企业微信开发之向员工付款(C#)
    企业微信开发之发放企业红包(C#)
    body-parser的使用
    NodeJs的express服务器报413 payload too large错误
    'nuxt' 不是内部或外部命令,也不是可运行的程序
    Linux node使用npm成功安装命令后,执行时却报找不到命令的问题
    npm查看全局安装了那些包的命令
    JS中==与===的区别
    JS事件流理解
  • 原文地址:https://www.cnblogs.com/aaronthon/p/13331539.html
Copyright © 2011-2022 走看看