• 2020年8月16日 关键字final,native


    /*
    * 学习修饰符时,希望大家问自己问题?
    * (1)修饰符本身的意思
    * (2)它可以修饰什么?
    * (3)它修饰后有什么不同?
    *
    *
    * final:修饰符的一种
    * 1、意思:最终的
    * 2、final可以修饰:类(外部类、内部类)、变量(成员变量(类变量、实例变量)、局部变量)、方法(静态方法、非静态方法)
    * 3、修饰后有什么不同?
    * (1)修饰类:表示这个类不能被继承了,我们可以称它为“太监类”
    * 例如:String、System、Math
    *
    * (2)修饰方法:表示这个方法不能被重写
    *
    * (3)修饰变量:表示这个变量的值不能被修改,即我们称为的“常量”
    * 常量有两种:
    * 一种是字面常量:例如:"hello",12,'a'
    * 一种是final声明的变量:final int A = 10;
    *
    * 这里要说明一下,常量的命名应该是所有单词都大写,每个单词之间使用_
    *
    * 回忆:权限修饰符
    * private、缺省、protected、public
    */

    package com.atguigu.test01;
    
    
    public class TestFinal {
        final int NUM = 10;
        
        public int getNUM() {
            return NUM;
        }
    /*    public void setNUM(int num){
            this.NUM = NUM;
        }*/
    
        public static void main(String[] args) {
            Son s = new Son();
            s.method();
            
            final int A = 10;
            //A = 20;//不能修改a的值
        }
        
        public static void change(final Circle c){
    //        c = new Circle();//错误的,因为c是常量
            c.radius *= 2; //因为radius的前面没有final,可以修改
        }
    }
    class Circle{
        double radius;
    }
    final class TaiJian{
        
    }
    /*class Sub extends TaiJian{
        
    }*/
    
    class Father{
        public void test(){
            //...
        }
        public final void method(){
            //..
        }
    }
    class Son extends Father{
    
        @Override
        public void test() {
            super.test();
        }
        
        /*public final void method(){
            //..
        }*/
    }

    /*
    * native:也是一个修饰符
    * 1、意思:原生的、本地的
    * 2、可以修饰什么?
    * 可以修饰方法
    * 3、它修饰的方法有什么不同?
    *
    * 语法格式:
    * 【修饰符】 class 类{
    * 【其他修饰符】 native 返回值类型 方法名(【形参列表】);
    * }
    * native修饰的方法,看不见方法体。
    * native修饰的方法,不是用Java语言实现的,而是调用了底层C/C++的代码,这些代码
    * 被编译为.dll文件,让Java来执行的。
    *
    * 4、特殊
    * (1)native方法,对于Java程序员来说,该怎么调用还怎么调用
    * (2)子类还可以选择对它进行重写
    *
    */

    package com.atguigu.test02;
    public class TestNative {
        public static void main(String[] args) {
            Object obj = new Object();
            System.out.println(obj.hashCode());
        }
    }
    class MyClass extends Object{
    
        //重写父类的native方法
        @Override
        public int hashCode() {
            return 1;
        }
        
    }
  • 相关阅读:
    js基本
    js循环语句
    常用的css
    Linux使用host-only的方式上网
    Struts2的文件上传及错误国际化显示
    ThinkPHP3.2.2 大写子母的用法及含义
    php中验证码不显示问题
    AOP中的ASPECTJ
    CGLIB和JDK代理
    mavne的创建
  • 原文地址:https://www.cnblogs.com/douyunpeng/p/13512920.html
Copyright © 2020-2023  润新知