为什么使用private/public/ static final 修饰属性或方法

  • Post author:
  • Post category:其他


1.三个修饰符:private/public、static、final 修饰

private: 表示属性或方法是私有的和public、protect对应

public: 表示公共的,其他类或者该类的子类也允许访问被public修饰的属性或方法

protected: 表示受保护的,不允许其他类访问被protected修饰的属性或方法

但是 ,它允许子类访问被protected修饰的属性或方法(不允许其他类,允许子类访问)

private: 表示私有的,不允许本类之外的类访问,它的子类也不允许访问被private修饰的属性或方法(本类之内访问,子类也不可以访问)

static:表示静态的,是属于某个类的,不属于某个对象的,是对象公有的

final: 最终的,不允许修改,一旦赋值后被final修饰的东西就不再允许修改了

final修饰引用变量时,该引用不能改变其引用地址了

final修饰方法时,被修饰的方法不能够被重写

final修饰的方法比非final方法要快,因为在编译的时候就被静态绑定了,不需要在运行时进行动态绑定

final修饰的类称为final类。通常使用final修饰的类功能是完整的,因为不允许继承(String、Integer等)。

final修饰变量时,该变量在类加载时就会被初始化,会因为对象的创建而创建加载

static修饰变量时,该变量将只被初始化一次,此后不再重新初始化。可见,final和static是不同的,一个类中若有着final和static修饰的两个属性,在创建对象时,static修饰的属性只被初始化一次,而final修饰的属性会随着对象的创建而被创建初始化。

public class ChatFrame implements MessageHandler {
    private JFrame frame;//窗口
    private JTextArea recvMsg;//JTextArea:文本域组件--接受的文本域
    private JTextArea enterMsg;//返回的文本域
    private JList userList; //JList:列表控件
    private JButton addUserBtn;//按钮组件——添加按钮
    private JButton sendBtn;// 发送按钮
    private JButton saveBtn;//保存按钮
    private DefaultListModel userListModel; //默认的列表模型

    private String name;//定义一个名称变量
    private int port;//端口
    private Messenger messenger;//消息处理
    private static final String ECHO_STRiNG = "echo";

    public ChatFrame(){
        buildGUI();
        init();
    }

2.因为static修饰的方法,是属于类范畴的,所以,在其他类中调用该类中的静态方法时,可以直接使用 类. 方法()进行调用

这里在其他类中调用ChatUtils类中的静态方法:

在这里插入图片描述


    //创建对话框中所需的组件,并使用布局管理器将它添加到窗口中
    private void buildGUI(){
        frame = new JFrame();//创建窗口的实例
        frame.setSize(600,300);//设置窗口的大小
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认关闭操作进程
        ChatUtils.locateFrameCenter(frame);//类.方法()进行直接调用

        recvMsg = new JTextArea();
        recvMsg.setRows(1);
        recvMsg.setColumns(10);
        JScrollPane scrollRecv = new JScrollPane(recvMsg);
        recvMsg.setEditable(false);

3.locateFrameCenter()方法

    //将窗口置于屏幕的中间
    public static void locateFrameCenter(JFrame frame){
        int framewidth = frame.getWidth();//窗口的宽
        int frameHeight = frame.getHeight();//窗口的高
        Toolkit toolkit = Toolkit.getDefaultToolkit();//返回默认工具包类
        Dimension screen = toolkit.getScreenSize();//得到屏幕大小
        int screenWidth = screen.width;//屏幕的宽
        int screenHeight = screen.height;//屏幕的高
        frame.setLocation((screenWidth - framewidth) / 2,(screenHeight - frameHeight) / 2);//得到窗口的坐标

    }

4.私有的方法,只能在本类中调用,不能够被子类调用

    //创建对话框中所需的组件,并使用布局管理器将它添加到窗口中
    private void buildGUI(){
        frame = new JFrame();//创建窗口的实例
        frame.setSize(600,300);//设置窗口的大小
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认关闭操作进程
        ChatUtils.locateFrameCenter(frame);//将窗口置于屏幕的中间

        recvMsg = new JTextArea();
        recvMsg.setRows(1);
        recvMsg.setColumns(10);
        JScrollPane scrollRecv = new JScrollPane(recvMsg);
        recvMsg.setEditable(false);



版权声明:本文为fengzige1993原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。