zoukankan      html  css  js  c++  java
  • java入门学习(6)—封装,继承,多态,this,super,初始代码块

    1、【封装】:将对象的状态信息隐藏,不允许直接访问,而是通过该类提供的的方法阿里实现内部信息的访问和操作。

          使用到的修饰符:private,不用修饰符(default),protected,public,

    private:当前类访问权限,适合把属性隐藏在类的内部,只能通过方法访问。(一般用来隐藏)

           default:包访问权限,只要自己所属的这包下的其他类都能访问。

           protected:子类访问权限,可以相同包,或者不同包访问。一般用于子类重写。

           public:公共属性,任何类都可以访问。(一般用来暴露)

    注:由此可以解释为什么局部变量不用修饰符?因为其局部变量的作用域已经定了,就在方法,或者代码块内,所以不需要额外的修饰符限定其作用域。

    封装方法:用setter _ _ getter方法进行隐藏的属性的访问。

          用法事列:private String name;//定义一个隐藏的属性

                     public String getName()//语法为:【修饰符】数据类型 get[封装的属性名第一个字母大写]
    {
    return name;                                【返回值和上面的数据类型一样】
    }
    public void setNmame(String name)【注意】:这是设置进去,不需要返回值
    {
    this.name=name;
    }

    2、【包】:引入包提供了类的多层命名空间,用于解决类的命名冲突,类文件管理等问题,【一般公司自己的包名多为公司域名的倒写】

            包名:全部为小写字母;

             语法:package 【包名】

    【注】:1、一个源文件只能指定一个包,同一个包下的类可以自由访问。

    2、当没有用import导入相应的包的时候,在父包中使用子包的类必须使用子包的全名,导入了包之后可以直接使用。

    3、import   java.util.*;这个表示导入util这个包下面的所有类,*号是通配符。

    4、import   static package.packagename.classname;这个是导入这个包的相应的类下面的静态属性。

    5、自己定义包时,使用javac   -d  源程序这个代码来编译时,-d的意思是系统会自动为package生成文件夹,并把生成的类放置在其下,当执行时会自动寻找,当然,子包作为子文件夹。

    3、【继承】:子类通过继承得到父类的全部【属性】和【方法】,【但不能获得父类的构造器】。

            语法:【修饰符】 class 【子类】extends 【父类】

    {//代码块

    }

    【注】:1、一个类只能有一个直接父类,可有无数个间接父类。【单继承】

    2、其实继承就是从一般到特殊的的情况,即:“is a”;如:apple is a fruit。

    3、一切的类都是object类的子类。也即:如果定义的类没有用extends显式继承某个类的话,那么就会默认继承object类。

    4、重写父类方法:a、方法名,形参列表都相同。

                                       b、子类重写的方法的访问权限必须比父类的访问权限更大,或者相等。

       c、子类重写方法的返回值类型必须比父类中方法的返回值类型更小,或者相等。

    【注】:1、重写也叫覆盖,就是子类重写父类的方法后,会覆盖(屏蔽)了父类的方法,当其需要调用的时候用super(参数)【利用参数的不同,找不同的方法】,【但是如果父类方法有private修饰,则无法调用或者重写】。

    2、子类的构造器总会默认的调用父类的构造器一次,相当于是要把父类的相关属性和方法加载到子类上。

    3、加上@override:防止重写父类方法是出错,编译期给出严格的检查,如果不这样,那么只有运行的时候才能抛出异常。

    【相近名字直接的区别】

    a、重载:同一个类的不同方法之间,通过不同的参数定义相同参数名的不同方法的途径。

    重写:发生在子类和父类之间的。

    b、this:发生的调用发生在一个类里面。

    super:发生在子类和父类之间,子类通过此关键字调用父类的初始化代码,属性,或者方法。

    【注】:由于this和super都只能放在方法的第一行,所以不可能同时出现。

    5、多态:java的变量在整个使用的过程中可能会有两个类型,编译时时对应的编译类型,而运行时便由实际赋予的值决定其变量。

           编译时类型:由声明它的变量决定。

           运行时类型:由实际指向(实际赋予)的类型决定。

    6、关键字:【引用类型变量】instanceof 【类,或者接口】判断前面的对象是否是后面类的实例,如果是返回值为true,如果不是返回值为false。

           【注】:1、其操作数的类型,要么与后面的类相同,要么与后面类有继承关系,否则会引起编译错误。

                           2、通常先用instance判断一个对象是否可以强制类型转换,然后再强制类型转换,从而保证程序的正确性。

    7、初始化代码块:对一个类或者一个实例进行初始化。

                         语法:【修饰】  {初始化代码块}  ;注:修饰符只能是static,或者可以省略。

                         特点:没有名字,所以不能被引用,只要创建对象时就会被隐式的执行。

    有无static 的区别:有static是类初始化块,当类加载的时候对类进行初始化,隐式执行(自动执行)。没有static则会在对类创建实例的时候自动执行。

                 何时执行:static修饰的是类一加载就执行,而没有static的是当创建实例时(执行顺序由代码块和构造器的位置决定),若初始化代码块在构造器前面则先执行,再执行构造器里的代码块,反之则先执行构造器里的代码再执行初始化代码块。

  • 相关阅读:
    23.课程应用接口
    22.课程页面设计
    21.手机接口
    20.云通讯
    19.JWT
    18.权限认证
    解决github下载慢的终极方法
    vs code 配置c/c++环境
    Python 字符编码处理总结
    Python编码
  • 原文地址:https://www.cnblogs.com/liulei-LL/p/8093157.html
Copyright © 2011-2022 走看看