导图社区 语法(包,权限修饰符,final,常量,枚举)
语法(包,权限修饰符,final,常量,枚举)总结,包是用来分门别类的管理各种不同类的,类似于文件夹、建包利于程序的管理和维护。权限修饰符是用来控制一个成员能够被访问的范围……
编辑于2022-05-12 12:52:02语法(包,权限修饰符,final,常量,枚举)
包
是什么?包是用来分门别类的管理各种不同类的,类似于文件夹、建包利于程序的管理和维护。
格式:package 公司域名倒写.技术名称。报名建议全部英文小写,且具备意义
建包语句必须在第一行,一般IDEA工具会帮助创建
导包:相同包下的类可以直接访问,不同包下的类必须导包,才可以使用!
导包格式:import 包名.类名;
注意事项:如果这个类中使用不同包下相同的类名,此时默认只能导入一个类的包,另一个类要使用命名访问。
例如:
权限修饰符
是什么?
是用来控制一个成员能够被访问的范围。
可以修饰成员变量,方法,构造器,内部类,不同权限修饰的成员能够被访问的范围将受到限制。
权限修饰符的分类和具体作用范围:
权限修饰符:有四种作用范围有小到大 (private -> 缺省 -> protected -> public)
private:只能在本类中访问
缺省:只能在本类中、同包下其他类访问(即:包访问权限)
protected:
只能在本类中、同包下的其他类中、其他包的子类中访问
注意事项:在其他包的子类中访问时,要用子类对象去访问:
// 报错
public:本类、同包的其他类中、其他包的子类中、其他包的无关类中都可以访问
学完权限修饰符需要具备的能力:
final
是什么意思?final关键字是最终的意思,可以修饰(类、方法、变量)
作用:
1.修饰类:表明该类是最终类,不能被继承。
2.修饰方法:表明该方法是最终方法,不能被重写。
3.修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次)
注意事项:
final修饰的变量是基本类型:那么变量存储的数据值不能发送改变。
final修饰的变量是引用类型:那么变量存储的地址值不能发送改变, 但是地址指向的对象内容是可以发送变化的。
常量
是什么?常量是使用了public static final修饰的常用变量, 必须有初始化值,而且执行的过程中其值不能被改变。
作用和好处
可以用于做系统的配置信息,方便程序的维护,同时也能提高可读性。
命名规范:
英文单词全部大写,多个单词下划线连接起来。
执行原理:
1.在编译阶段会进行"宏替换",把使用常量的地方全部替换成真实的字面量。
2.这样做的好处是让使用常量的程序的执行性能与直接使用字面量是一样的。
案例:超级玛丽方向
public class ConstantDemo { public static final String UP = "上"; public static final String DOWN = "下"; public static final String LEFT = "左"; public static final String RIGHT = "右"; public static void main(String[] args) { //1.创建一个窗口对象(桌子) JFrame win = new JFrame(); //2.创建一个面板对象(桌布) JPanel panel = new JPanel(); //3.把桌布垫在桌子上 win.add(panel); //4.创建四个按照对象 JButton btn1 = new JButton("上"); JButton btn2 = new JButton("下"); JButton btn3 = new JButton("左"); JButton btn4 = new JButton("右"); //5.把按钮对象添加到桌布上去 panel.add(btn1); panel.add(btn2); panel.add(btn3); panel.add(btn4); //6.显示窗口 win.setLocationRelativeTo(null); win.setSize(300,400); win.setVisible(true); btn1.addActionListener(new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { move(UP); } }); btn2.addActionListener(new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { move(DOWN); } }); btn3.addActionListener(new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { move(LEFT); } }); btn4.addActionListener(new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { move(RIGHT); } }); } public static void move(String o){ //控制方向 switch (o){ case UP: System.out.println("向上"); break; case DOWN: System.out.println("向下"); break; case LEFT: System.out.println("向左"); break; case RIGHT: System.out.println("向右"); break; } } }
代码可读性好,实现了软编码形式。
枚举
是什么?是Java中的一种特殊类型
作用:是为了做信息的标识和信息的分类
格式:
反编译后观察枚举的特征:
特征:
1.枚举类都是继承了枚举类型:java.lang.Enum
2.枚举都是最终类,不可以被继承
3.枚举的构造器都是私有的,枚举对外不能创建对象
4.枚举类的第一行默认都是罗列枚举对象的名称的
5.枚举类相当于是多例模式。
案例:超级玛丽方向
枚举的代码:
public enum Orientation { UP,DOWN,LEFT,RIGHT; }
修改后的超级玛丽的代码:
import javax.swing.*; import java.awt.event.ActionEvent; public class EnumDemo { public static void main(String[] args) { //1.创建一个窗口对象(桌子) JFrame win = new JFrame(); //2.创建一个面板对象(桌布) JPanel panel = new JPanel(); //3.把桌布垫在桌子上 win.add(panel); //4.创建四个按照对象 JButton btn1 = new JButton("上"); JButton btn2 = new JButton("下"); JButton btn3 = new JButton("左"); JButton btn4 = new JButton("右"); //5.把按钮对象添加到桌布上去 panel.add(btn1); panel.add(btn2); panel.add(btn3); panel.add(btn4); //6.显示窗口 win.setLocationRelativeTo(null); win.setSize(300,400); win.setVisible(true); btn1.addActionListener(new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { move(Orientation.UP); } }); btn2.addActionListener(new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { move(Orientation.DOWN); } }); btn3.addActionListener(new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { move(Orientation.LEFT); } }); btn4.addActionListener(new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { move(Orientation.RIGHT); } }); } public static void move(Orientation o){ //控制方向 switch (o){ case UP: System.out.println("向上"); System.out.println(Orientation.UP); break; case DOWN: System.out.println("向下"); System.out.println(Orientation.DOWN); break; case LEFT: System.out.println("向左"); System.out.println(Orientation.LEFT); break; case RIGHT: System.out.println("向右"); System.out.println(Orientation.RIGHT); break; } } }