• Java—封装


    • 封装
    1. 将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法类实现对隐藏信息的操作和访问。
    2. 封装的实现步骤:修改属性的可见性(设为private)=>创建setter和getter方法(用于属性的读写)=>在setter和getter方法中加入属性控制语句(对属性值的合法性进行判断)
    • Java中的包
    1. 包的作用:管理Java文件;解决同名文件冲突
    2. 定义包:package 包名,注意:必须放在Java源程序的第一行;包名间可以使用“.”号隔开,如:com.test.Myclass
    3. 系统中的包:java.(功能).(类)
    4. 包的使用:可以通过import关键字,在某个文件使用其他文件中的类。如import com.test.Myclass;
    5. java中,包的命名规范是全小写字母拼写。
    6. 使用包的时候,不但可以加载某个包下的所有文件,如:com.test.*;也可以加载某个具体子包下的所有文件,如:com.test.music.*

      注:默认情况下,java会将同一个包内的类自动导入

      以下定义了两个同名Telephone的类:

    package com.test;
    
    public class Telephone {
        private double screen;
        public double getScreen() {
            return screen;
        }
        public void setScreen(double newScreen) {
            screen = newScreen;
        }
        public Telephone(){
            System.out.println("com.test.Telephone无参数的构造方法");
        }
    }
    package com.test.second;
    
    public class Telephone {
        public Telephone() {
            System.out.println("com.test.secont.Telephone");
        }
    }

      Demo.java

    package com.test;
    import com.test.Telephone;
    
    public class Demo {
    
        public static void main(String[] args) {
            Telephone phone = new Telephone();
        }
    
    }

      运行结果:

      com.test.Telephone无参数的构造方法

    package com.test;
    import com.test.second.Telephone;
    
    public class Demo {
    
        public static void main(String[] args) {
            Telephone phone = new Telephone();
        }
    
    }

      运行结果:

      com.test.secont.Telephone

    • 访问修饰符
    1. 可以修饰属性和方法的访问范围
    访问修饰符 本类 同包 子类 其他
    private      
    默认    
    protected  
    public
    •  this关键字

      this代表当前对象,this.属性 操作当前对象的属性;this.方法 调用当前对象的方法

    • 内部类

      内部类,是定义在另一个类里面的类,与之对应,包含内部类的类被称为外部类。

      内部类的作用:

    1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
    2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
    3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
    4. 内部类分为:成员内部类、静态内部类、方法内部类、匿名内部类
    •  成员内部类

      

    1. Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等
    2. Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响
    3. 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );
    4.  编译上面的程序后,会发现产生了两个 .class 文件,Outer$Inner.class和Outer.class,第二个是外部类的 .class 文件,第一个是内部类的 .class 文件,即成员内部类的 .class 文件总是这样:外部类名$内部类名.class

      注意:

    1. 外部类是不能直接使用内部类的成员和方法
    2. 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字

      

    • 静态内部类

      

    1. 静态成员类不能直接访问外部类的非静态成员,可以通过new 外部类().成员来访问
    2.  如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
    3. 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
    • 方法内部类

      方法内部类是内部类定义在外部类的方法中。方法内部类只在该方法的内部可见。

      注意:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和static修饰符。

    package com.test;
    
    public class Demo12 {
        
        public void show() {
            final int a = 12;
            int b = 13;
            
            class MInner {
                int c= 2;
                public void print() {
                    System.out.println("外部类方法中的变量a=" + a);
                    System.out.println("外部类方法中的变量b=" + b);
                    System.out.println("内部类中的变量c=" + c);
                }
            }
            MInner mi = new MInner();
            mi.print();
        }
        
        public static void main(String[] args) {
            Demo12 demo = new Demo12();
            demo.show();
        }
    }

      运行结果:  

      外部类方法中的变量a=12
      外部类方法中的变量b=13
      内部类中的变量c=2

  • 相关阅读:
    NetCore去注册Eureka
    netcore项目使用swagger开发
    二、Rabbit使用-初次测试
    一、Rabbit使用-安装教程
    安装Erlang使用RabbitMQ
    Mac根目录下挂载文件
    将博客搬至CSDN
    photoshop for mac
    ssh 端口转发
    Linux 全局使用php命令
  • 原文地址:https://www.cnblogs.com/tianxintian22/p/6492894.html
Copyright © 2020-2023  润新知