学习总结!

final

  1. final是java语言中的一个关键字

  2. final表示最终的,不可改变的。

  3. final可以修饰变量以及方法,还有类等。

    final修饰的类(无法被继承)

final class A{
    //A 是没有子孙的
}
class B extends A{
    //错误的, 无法从最终类A进行继承
    //B类继承A类 相当于对A类功能进行扩展
    //如果不希望别人对A类进行扩展,可以给A类加final关键字,如String类
}

 final修饰的实例变量(必须手动赋值)

/*
一般情况下
实例变量如果还没有赋值的话,系统会赋默认值

final 修饰实例变量:
系统不负责赋默认值,要求程序员必须手动赋值,只能赋一次,
这个手动赋值,在变量后面赋值可以,在构造方法中赋值也可以



*/
public class FinalTest02(){
    public static void main(String[]args){
        
    }
}


class User{
    //实例变量
    
    //错误: 变量age未在默认构造器中初始化
    //final int age;
    final int age=10;
    
    //在构造方法中赋值 weight只赋一次值
    final double weight;
    //构造方法
    public User(){   
        this.weight=80;
        //系统赋默认值在这个时候,final修饰后,系统不会赋值
        //this.weight=0;
     
    }
    
    
}

final修饰的局部变量(只能赋一次值)

public class FinalTest01{
    public static void main(String[]args){
        //局部变量
        int i=100;
        //重新赋值, 没问题
        i=200;
        
        // 再定义一个局部变量 
        final int k=100;
        //重新赋值
        //错误: 无法为最终变量k分配值
       // k=300;
    }
}

final修饰的方法(无法被覆盖,重写)

class C{
    public final void doSome(){
       System.out.println("C's doSome...")
    } 
}
class D extends C{
 //错误,无法覆盖
 /*   public  void doSome(){
     System.out.println("D's doSome...")
    } */
}

给final修饰的变量赋值的方法:

1.代码块

2.显示赋值

3.构造器

抽象类:

在面向对象的概念中,所有对象都是通过类来描述的,但是反过来,并不是多又累都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘具体的对象,这样的类就是抽象类。

在java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法。而抽象方法不用给出具体的实现体。即没有{...}代码块。

定义抽象类和抽象方法:

public abstract class Shape{//定义一个Shape抽象类
 
    public String name;//成员变量
    public abstract void draw();//抽象方法
 
    private abstract void method();//报错
 
    void calArea(){//普通方法
        System.out.println("计算面积!");
    }
 
    public Shape(){//无参构造方法
        System.out.println("Shape构造方法!");
    }
 
    public Shape(String name) {//有参构造方法
        this.name = name;
    }
}

注意:abstract不能修饰static,final,private修饰的方法和final修饰的类。

抽象类的子类需要将父类中的抽象方法全部重写或定义为抽象类。

相关推荐

  1. 学习总结

    2024-04-03 18:24:03       23 阅读
  2. 学习总结

    2024-04-03 18:24:03       21 阅读
  3. 学习总结

    2024-04-03 18:24:03       20 阅读
  4. 学习总结

    2024-04-03 18:24:03       17 阅读
  5. dva的学习总结

    2024-04-03 18:24:03       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 18:24:03       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 18:24:03       5 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 18:24:03       4 阅读
  4. Python语言-面向对象

    2024-04-03 18:24:03       6 阅读

热门阅读

  1. Vue3中props和emits的使用总结

    2024-04-03 18:24:03       22 阅读
  2. IO和NIO的主要区别在哪里?

    2024-04-03 18:24:03       20 阅读
  3. CSS 滚动条样式修改

    2024-04-03 18:24:03       24 阅读
  4. codeforces round 936 div2(a,b,c)

    2024-04-03 18:24:03       25 阅读
  5. Python程序设计 魔法函数

    2024-04-03 18:24:03       19 阅读
  6. ACI Fabric

    2024-04-03 18:24:03       19 阅读
  7. wencoo个人的博客目录索引-更新

    2024-04-03 18:24:03       44 阅读
  8. Oracle extent、segment、datafile、tablespace及存储关系

    2024-04-03 18:24:03       23 阅读
  9. Oracle密码文件

    2024-04-03 18:24:03       22 阅读
  10. SpringMVC 中实现自定义转换

    2024-04-03 18:24:03       23 阅读
  11. 开源的分布式文件系统 Fastdfs 安装入门介绍

    2024-04-03 18:24:03       24 阅读
  12. 在stable diffusion中如何分辨lora、大模型、controlnet

    2024-04-03 18:24:03       21 阅读