栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础学习 Day 15

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础学习 Day 15

Java基础学习 Day 15 1. final关键字
  • final字意义:关键字用来代表最终的,不可改变

  • 常见四种用法

    1. final可用来修饰类

      //定义一个final类
      
      public final class MyClass {
          String name;
          public void method(){};
      }
      //不能被任何类继承这个final类,但该类可继承别的类(也就同时说明final类的方法不能被任何类重写和覆盖)
      public class MySonClass extends MyClass{
          //报错 Cannot inherit from final 'com.kou.oop.demo12.MyClass
      }
      
      
    2. final可用来修饰一个方法

      //定义一个普通父类有一个final方法
      
      public class BasicDemo {
      
          public final void method(){
              System.out.println("父类final方法执行");
          }
      }
      //定义一个类继承该父类 重写方法时发现报错
      public class DerivedDemo extends BasicDemo {
          public final void method(){
              //报错'method()' cannot override 'method()' in 'com.kou.oop.demo12.BasicDemo'; overridden method is final
              System.out.println("父类final方法执行");
          }
      }
      

      ※对于类,方法来说,abstract和final不能同时出现,因为他们本身是具有矛盾意义的

    3. final可用来修饰一个局部变量

      //简单定义一个Student类,有name,age属性和get,set方法等    
      public static void main(String[] args) {
              int num0 = 10;
              System.out.println(num0);
              num0 = 20;
              System.out.println(num0);
              //一旦用final来修饰局部变量,那么这个变量就不能进行更改(保证唯一一次赋值)
              final int num1 = 30;
              //num1 = 31; 报错 //Cannot assign a value to final variable 'num1'
              //当final修饰基本型变量时,数据不能改变
              //当final修饰的局部变量是引用类型时,该引用指向的地址值不能变
              Student stu1 = new Student("Karen",21);
              System.out.println(stu1);//com.kou.oop.demo02.Student@677327b6
              System.out.println(stu1.getName());//Karen
              stu1 = new Student("Kate",32);
              System.out.println(stu1.getName());//Kate
              System.out.println(stu1);//com.kou.oop.demo02.Student@14ae5a5
              //如果对象用final修饰时,则不能再改变该地址值了
              final Student stu2 = new Student("Karen",21);
              System.out.println(stu2);//com.kou.oop.demo02.Student@7f31245a
              System.out.println(stu2.getName());//Karen
              //stu2 = new Student("Kate",32);报错 Cannot assign a value to final variable 'stu2'
              //地址值不变,但是可以调用set方法给其中的成员变量改变值
              stu2.setAge(33);
              stu2.setName("Kyle");
              System.out.println(stu2.getAge() +stu2.getName());//33Kyle	
          }
      
    4. final可用来修饰一个成员变量

      //构造方法赋值
      public class Person {
           private final String name; //Variable 'name' might not have been initialized
          //必须保证类中的所有的重载构造方法堆该成员变量进行赋值,并且之后的setter方法不可用,因为只能赋值一次
          //private String name;
      
          public Person() {
               this.name = name;
          }
      
          public Person(String name) {
              this.name = name;
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              //this.name = name;//报错 //Cannot assign a value to final variable 'name'
          }
      }
      //手动赋值
      public class Person {
           private final String name = "Karen";//Variable 'name' might not have been initialized
          //必须保证类中的所有的重载构造方法堆该成员变量进行赋值,并且之后的setter方法不可用,因为只能赋值一次
          //private String name;
      
          public Person() {
          }
      
          public Person(String name) {
           
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
             // this.name = name;//报错 //Cannot assign a value to final variable 'name'
          }
      }
      
      
2. 权限修饰符

Java中有四种权限修饰符,从大到小依次为:

※(default)不是关键字default,而是什么也不写叫做默认的权限

访问分类public >protected>(default)>private
同一个类(自己)YesYesYesYes
同一个包(邻居)YesYesYesNo
不同包子类(儿子)YesYesNoNo
不同包非子类(陌生人)YesNoNoNo
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号