static和final关键字 学习 demo练习

简介: static和final关键字 学习 demo练习

单利模式:


单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。


这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。


注意:


1、单例类只能有一个实例。

2、单例类必须自己创建自己的唯一实例。

3、单例类必须给所有其他对象提供这一实例。

具体可查看菜鸟


static


Static修饰符用来创建类方法和类变量。


1、Static关键字的特点:


(1)Static是一个修饰符,用于修饰成员。


(2)Static修饰的成员被所有的对象所共享。


(3)Static优先于对象存在,因为static的成员随着类的加载就已经存在了。


(4)Static修饰的成员多了一种调用方式,就可以直接被类名所调用。类名,静态成员。


(5)Static修饰的数据是共享数据,对象中的存储的是特有数据。


final


1.关键字final表示最终的,不可变的。


2.关键字final可以修饰变量、方法,还有类


3.final修饰的类无法被继承


4.final修饰的方法无法被覆盖,无法被重写


5.final控制不了能不能调用的问题,表示的是最后的,不能变的,不能改的。


6.final修饰的变量只能赋一次值


7.final修饰的引用:


该引用只能指向1个对象,并且它只能永远指向该对象,并且无法指向其他对象。


并且在该方法执行过程中,该引用指向对象之后,该对象不会被垃圾回收期回收


直到当前方法结束,才会释放空间。


8.虽然final的引用指向对象A后,不能再重新指向对象B,


但是对象A内部的数据可以被修改。


9.final修饰的实例变量,只能赋值一次。结论:因为实例变量没有手动赋值,系统会赋默认值。


因而要求final修饰的实例变量必须手动赋值。这个手动赋值,在变量后面赋值可以,在构造器


中赋值也可以。(显示赋值、构造器赋值、代码块赋值)


10.final修饰的实例变量一般添加 static修饰


终极结论:static final联合修饰的变量称为“常量”,常量名建议大写,每个单词间用下划线衔接。


常量和静态变量一样,区别在于:常量的值不能变。相同点在于:都是储存在方法区,并且都是


在类的加载时初始化。常量一般都是公共的,public修饰。


重写父类方法


描述

父类Base中定义了若干get方法,以及一个sum方法,sum方法是对一组数字的求和。请在子类 Sub 中重写 getX() 方法,使得 sum 方法返回结果为 x*10+y


输入描述:

整数


输出描述:

整数的和


具体做法:


Sub是Base的子类,因此继承了父类的成员变量和成员方法,成员方法中,getY()和sum()因为加了final关键字,无法被修改,子类中是直接使用,而getX()函数可以在子类中出些,我们重写为获取x的值扩大10倍。

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            int x = scanner.nextInt();
            int y = scanner.nextInt();
            Sub sub = new Sub(x, y);
            System.out.println(sub.sum());
        }
    }
}
class Base {
    private int x;
    private int y;
    public Base(int x, int y) {
        this.x = x;
        this.y = y;
    }
    public int getX() {
        return x;
    }
    public final int getY() {
        return y;
    }
    public final int sum() {
        return getX() + getY();
    }
}
class Sub extends Base {
    public Sub(int x, int y) {
        super(x, y);
    }
 //先赋值到sub的
    @Override
    public int getX() {
        return super.getX() * 10;
    }
相关文章
|
存储 Cloud Native 编译器
C++ static与类
C++ static与类
|
1月前
学习使用static的另一用法
学习使用static的另一用法。
46 12
|
3月前
|
Java
【Java】static 修饰变量
【Java】static 修饰变量
|
6月前
|
Java
java-基础-Interface、abstract类、Static class 、non static class的区别
【4月更文挑战第5天】Java中的接口、抽象类、静态类和非静态类各具特色:接口仅含抽象方法和常量,用于定义行为规范;抽象类可包含抽象和非抽象方法,提供部分实现,支持多继承;静态内部类不依赖外部类实例,可独立存在,访问外部类的静态成员;非静态内部类持有关联外部类引用,能访问其所有成员。这些机制根据设计需求和场景选择使用。
47 6
|
6月前
final关键字与static对比
final关键字与static对比
|
存储 Java 编译器
Java-关于main函数的修饰符(为什么要带public和static)
关于Java主函数的修饰符(为什么要带public和static) public修饰符 public是函数的权限,决定了该函数是否可以被外部的函数调用
|
存储 C++
【C++类】 -- 类与static
【C++类】 -- 类与static
62 0
|
设计模式 Java
java面对对象(下.1)(java关键字理解:static final main)
当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上 的对象,只有通过 new 关键字才会产生出对象,这时系统才会分配内存空间给对象, 其方法才可以供外部调用。
java面对对象(下.1)(java关键字理解:static final main)
|
前端开发 程序员 开发者
class-使用 static 创建静态属性|学习笔记
快速学习 class-使用 static 创建静态属性
121 0