JAVA自学_语法知识——包、权限修饰符、抽象类

一、包:

  用来分门别类地管理各种不同类——如何建立:package com.codeboy.javabean——但是在左边新建软件包时已经自动写好了

  如何导包:相同包下的类可以直接访问,不同包下的类需要导包——import 包名.类名;(在使用JAVA提供的一些方法——scanner时也用到了导包);快捷键alt+回车

  如果这个类中要使用不同包下相同的类名,此时默认只能导入一个类的包,另一个类要使用全名(包名)访问

二、权限修饰符

  用来控制一个成员被访问的范围,可以修饰变量,方法,构造器,内部类,不同的权限修饰符修饰的成员能够被访问的范围将受到限制

  对于类而言只有  publci  abstract  final

  范围从小到大:private——缺省(包访问权限,同包其他类)——protected(子类访问权限,必须是当前类的子类,继承关系去访问)——public

  自己定义成员一般是——成员变量一般私有、方法一般公开、  同一个类的两个对象可以互相访问private成员,因为private限制在类的层面而不是对象层面

  public 具有被其他包中的类访问的可能性,只要在程序中声明其恰到的位置并使用import语句引入此类 

  注意:protected虽然是允许它的子类进行访问,但是父类的protected变量必须被子类继承过来之后,作为子类对象的成员使用,而不是直接在子类中用父类来声明父类对象,然后用父类的对象去访问。 

三、最终类final语法(绝后了):

  最终之意,终结篡改,修饰类,方法,变量——final class xxx{}

  修饰类,不能被继承;方法是最终方法,不能被重写;修饰变量,变量有且仅能被赋值一次——变量分为局部变量和成员变量——实例和静态成员变量

  在方法中的局部变量加final后,方法内部就不能再赋值了,因为调用方法会往局部变量中先传值等于第一次赋值;修饰实例成员变量时,几乎不用。

  注意,final修饰的是引用类型时,地址值不能变化,但所指内容可以变换。  影响的是后续类对这些东西的继承性。

四、常量的概述及应用:

  使用了public static final修饰的成员变量,必须有初始值,执行中不能改变;可以用作系统配置信息,方便维护,并且会编译优化,宏变换,编译之后恢复为真实值

  信息标志和分类:代码可读性好,实现了软编码形式。但是如果出错代码不会提示。

五、枚举:

  概述:

  JAVA中的一种特殊类型,用来做信息的标志和信息的分类——修饰符 enum 枚举名称{第一行必须都是罗列枚举类实例的名称}

  枚举类都继承了枚举类型java.lang.Enum;枚举类都是最终类;枚举类的构造器都是私有的;第一行默认都是罗列枚举对象的名称

  ps:switch会兼容枚举类型;但是枚举不能表示具体的数据值。

六、抽象类:

  abstract关键字,修饰类和方法——抽象方法不能写方法体代码(不能有大括号),类中一旦由抽象方法,这个类必须声明为抽象类

  抽象类通常作为父类,必须让子类来继承,是不完整的设计图——子类一定要完成某些行为,但是子类们完成这个行为的具体操作不同,于是父类只是抽象定义此方法,交给子类自己去重写方法实现

  一个类继承了抽象类,那么它必须重写完此抽象类的全部方法——父债子还

  ps:类有的东西抽象类都有,不能用abstract修饰变量,代码块,构造器;最重要特质:得到了抽象方法,也失去了创建对象的能力,抽象就不该实例化了。

final和abstract是互斥关系

   应用:模板方法模式(20个模式之一,单例模式等)

    系统中有一个功能多处在开发,大部分代码是一样的,其中有部分不同。——将此功能定义为一个模板,放在抽象类中,模板只定义通用的能确定的代码,不能决定的功能定义为抽象方法让子类具体实现  像写信的正文部分会被定义为抽象方法,子类调用后要重写此抽象方法。其他部分因为相同被模板自己写出。——最好用final修饰模板方法。

  是让子类直接使用的,不是让他重写的。——抽象类的子类仍然可以是一个抽象类——大大提高维护效率,把各子类的公共属性写出,改变时不需要每个都改

七、native本地方法:

  用来声明其他语言的方法体,跨平台性使用。

posted @ 2022-05-01 17:37  dreamLucode  阅读(43)  评论(0编辑  收藏  举报