zoukankan      html  css  js  c++  java
  • java面向对象之关键字,权限修饰符

    1.关键字:this,static,package,import
    this:
    1、表示对当前对象的引用!
    2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。
    3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!
    还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!
    package:
    便于管理大型软件系统中数目众多的类, 解决类名重名的现象;
    static(不在堆里面也不在栈里面, 在数据区(data seg)):
    如果声明了静态方法或变量,值是放在方法区,因为方法区是一个数据共享区;所以不管什么变量访问它,都是同一份.
    在静态方法中不能直接访问实例方法和实例变量.
    在静态方法中不能使用 this 和 super 关键字.
    静态方法不能被 abstract 修饰.
    静态的成员变量可以使用类名或者是对象进行访问,非静态成员变量只能使用对象进行访问.
    静态函数可以直接访问静态的成员,但是不能够直接访问非静态成员.,非静态函数可以访问静态和非静态成员.
    当类被加载时,静态代码块只能被执行一次。类中不同的静态方法代码块按他们在类中出现的顺序被依次执行.
    当多个修饰符连用时,修饰符的顺序可以颠倒,不过作为普遍遵守的编码规范,通常把访问控制修饰符放在首位,其次是 static 或 abstac修饰符,接着就是其他的修饰符

    import:
    import关键字是用来导入包的,因为实际开发中,你不可能把所有的类都放在同一个default包里面。
    包的作用就是给java类进行分拣,不同业务逻辑的java类放在同一个包中。比如工具包,实体包。

    2.访问控制, 权限修饰符(private default protected public)
    作用:用于控制被修饰变量,方法,类的可见范围。

    puclic class 类名 {
      private 类型 属性1;    //私有的,只有本类能访问。
      default 类型 属性2; //同一个包可以访问,不同包的字父类不能访问
      protected 类型 属性3; //不同包的字父类可以访问得到,但是不同包的其他内容不能访问到
      public 类型 属性4;//没有限制,所以都能访问到。public不是白叫的。
    
    //set, get的用法
    //在一个类被继承之后,我们可以在它的子类中,重新对父类的某些属性进行重新赋值,这就大大增加了代码的不安全性,所以,一般提供set,get两个成员方法,
     来获取和修改父变量的某些属性。
      public void setName(String name){ // 设置某些属性,需要传入参数     this.name = name; //因为是修改属性值,不清楚返回值类型,所以不用写ruturn;   }   public String getName(){ //获取某些属性的属性值     return name;//把需要获取的属性值ruturn出来,就可以那来使用了。   } }

    3.super关键字:
    super表示当前对象对父类对象的一个引用,另外,super可以调用当前父类对象的构造函数。
    注意: 子类调用父类的构造方法时,super语句必须是子类构造方法的第一句!!

    public class Fu{ //父类
      protected String name;
      protected int age;
      public Fu( String name,int age){ //这是父类 的一个构造方法,需要向里边传值
        this.name = name;
        this.age = age; //完成初始化
      }
    }
    public class Zi extends Fu{ //子类 通过extends关键字,实现对父类的继承
      public Zi(){ //这是子类的构造方法,也称为子类的构造器
        super(String name,int age)//先把父类的构造方法引进来,若父类的构造方法没有传值,括号内的内容可以省略,super()可以不写,默认加上的;
                            }
      //
    若父类和子类的属性值有重名现象(如name),则可以用super.name来表示父类的属性。
     System.out.println(this.name+","+super.name)
    }


    4. final关键字

    根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。
    final类不能被继承,没有子类,final类中的方法默认是final的。
    final方法不能被子类的方法覆盖,但可以被继承。
    final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
    final不能用于修饰构造方法。
    注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。
    4-1、final类
    final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。
    4-2、final方法
    如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。
    使用final方法的原因有二:
    第一、把方法锁定,防止任何继承类修改它的意义和实现。
    第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
    4-3、final变量(常量)
    用final修饰的成员变量表示常量,值一旦给定就无法改变!
    final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。
    从下面的例子中可以看出,一旦给final变量初值后,值就不能再改变了。
    另外,final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。

     

  • 相关阅读:
    产品经理的十宗罪,你犯了几宗?
    产品经理的10大顾虑
    【FastAPI 学习 七】GET和POST请求参数接收以及验证
    【FastAPI 学习 六】异常处理
    【FastAPI 学习 五】统一响应json数据格式
    前端展示(三)
    前端展示(二)
    前端设计(一)
    后端流程分析
    生成词云图
  • 原文地址:https://www.cnblogs.com/donghb/p/7204553.html
Copyright © 2011-2022 走看看