• Java 封装与类


    封装与类

    • 面向对象的程序设计将数据和对数据的操作行为封装在一起,作为一个相互依存、不可分割的整体——类。
    • 类中的大多数数据只能为本类的行为处理,类会提供公开的外部接口和外界进行通信。
    • 面向对象的显著特点:封装性继承性多态性
    • 封装隐藏了内部实现,继承实现了现有代码的用,多态在代码复用的基础上可以改写对象的行为。

    封装:

    (1)把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位。

    (2)实现“信息隐蔽”,尽可能隐藏对象的内部细节,对外界形成一个边界,只保留有限的接口和外界进行联系。 


    类:

    1. 定义:[类修饰符] class <类名>{ <类体 >}

      (1)类的访问控制符:public, protected, private, package(默认)

      (2)数据成员/成员变量

      (3)数据成员的 set 和 get 方法:通常会将数据成员私有化(声明数据成员为 private),只允许在类的内部直接存取,外界则使用类声明的两个公开的接口(set 和 get 方法)进行访问

    package Blog;
    
    public class GanGan {
        // 成员变量
        private String name;
    
        
        // 成员变量的 set 和 get 方法
        public String getName() {
            return name;
        }
        
        public void setName(String name) {
            this.name = name;
        }
    }

      (4)构造方法:用于为新建的对象分配存储空间和对数据成员进行初始化,它只能再创建对象是用 new 命令调用

          *  构造方法通常被重载以提供无参、有参等多种初始化的形式,程序运行时,编译系统会根据创建的对象的参数情况匹配相应的构造方法。

          *  如果一个类中为定义构造方法,编译系统会为之提供一个缺省的无参、方法体为空的构造方法

          

    public GanGan() {
            
    }

          *  但是,一旦类中自行定义了其他构造方法后,编译系统将不再提供默认的无参构造方法。但无论怎样,都需要在类中自定义一个无参的构造方法

          *  如果类中包含了多个重载的构造方法,而这些重载方法之间存在完全包含的关系,那么可以用一个构造方法去调用另一个构造方法

    package Blog;
    
    public class GanGan {
        // 成员变量
        private String name;
        private int age;
        
        // 空构造
        public GanGan() {
            super();
        }
        
        // 有参构造,重载
        
        public GanGan(String name) {
            this.name  = name;
        }
        
        public GanGan(String name, int age) {
            // 使用 this 调用自己的其它构造方法
            // this 调用只能再构造方法中使用,且必须是构造方法执行体的第一句
            this(name);
            this.age = age;
            
        }
        
        
        // 成员变量的 set 和 get 方法
        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;
        }
        
        
    }

    对象和引用

      1. 创建后的对象存在与堆内存中,通过它的引用变量才能才能访问到,引用变量位于栈内存中。

        (Java 中的 String 类型变量为引用类型,其默认的初值为 null)

      2. 引用变量只存储了对象的地址,与对象建立了指向的关系

        使用对象的成员:引用变量 . 成员变量,引用变量 . 成员方法


    关于 static

    1. 对于 static 成员,建议使用类名 . 形式进行存取(static成员通常是为类的对象所共享的数据)

    package Blog;
    
    public class StaticClass {
        // 成员变量
        public static String nationality = "中国";
        
    }
    package Blog;
    
    public class StaticDemo {
    
        public static void main(String[] args) {
            System.out.println("干干的国籍:" + StaticClass.nationality);
        }
    }

    运行成果:

    2. static 方法只能访问 static 成员;非 static 方法既可以访问 static 成员,又可以访问非 static 成员

    3. static 代码块:如果在加载类时希望先进行一些特殊的初始化,可以使用 static 定义一个代码块,将期望最早执行的初始化任务写在代码块中。(类在家在时,会预先执行 static 代码块中的代码,且只执行一次

    package Blog;
    
    public class StaticBlockTest {
        // 静态代码块
        static {
            System.out.println("static 代码区,类正在被加载......,我只执行一次");
        }
        
        // 构造方法
        public StaticBlockTest() {
            System.out.println("在创建类的对象......");
        }
    }
    package Blog;
    
    public class StaticBlockDemo {
    
        public static void main(String[] args) {
            new StaticBlockTest();
            new StaticBlockTest();
    
        }
    
    }

    运行结果:

          

  • 相关阅读:
    使用控件的事件,动态创建控件
    C#委托和事件
    C# 静态类
    C# 饼形图
    (三)backbone
    (二)backbone
    (一)backbone
    (五)CodeMirror
    (二)CSS3应用
    (一)CSS3动画应用
  • 原文地址:https://www.cnblogs.com/ZZG-GANGAN/p/13917188.html
Copyright © 2020-2023  润新知