Java类与继承

2023-05-16

继承二

1、static关键字

使用场景:

- 当某些场景下不需要创建多个“内容”,每个类的实例对象共享一个“内容”时就可以使用static关键字来修饰

含义:

- static表示静态内容,使用static修饰的内容就可以和类相关联,类存在,static修饰的内容就存在,随着类的加载而加载。

修饰范围:

- 属性、方法,代码块、内部类

访问方式:

  - 类名.属性名 / 类名.方法名
  - 实例名.属性名  / 实例名.方法名

实例代码:()

 static final String SEX_MALE = "Q仔";
 static final String SEX_FEMALE = "Q妹";

静态属性:使用static修饰的属性

  • 它是随着类的加载而创建,类存在,属性就存在。所以不同于实例对象的生命周期。而类的加载时先与对象的加载的,因为每个对象都是由类创建的,所以类属性(static修饰的)被所有的实例对象共享。如果其中一个实例对象修改了类属性的值,则其他对象可以看到修改后的值。

实例属性:

- 没有被static修饰的属性,称为实例属性,它随着实例对象的创建而存在,每个对象有独立的空间,则每个属性就有独立的空间,互不干扰。

静态方法:

- 使用static修饰的方法
- 随着类的加载而加载,可通过“类名.静态方法名”或“实例对象.静态方法名”方式调用
- 静态方法只能调用静态属性/方法
- 非静态方法,即可以调用静态属性/方法,也可以调用非静态属性方法
class Person {
    private int i = 0;
    
    public static void main(String[] args){
        System.out.print(++i);//编译出错,静态方法不能调用非静态属性
    }
}

思考题:

​ static修饰的方法是否可以使用this和super关键字?

开发中如何确定一个属性和方法声明为静态的?

- 类中的常量也通常声明为静态(static)
- 工具类中的方法,通常声明为静态的。 比如:Math、Arrays、Collections

2、单例设计模式

定义:

​ 采用一定的方法保证在整个软件系统中,对某个类只能创建一个对象实例。

如何实现:

	- 方式一:饿汉式 : 类加载时,就创建对象,对象加载时间过长、线程安全。
	- 方式二:懒汉式:  掉用方法时创建对象,延迟对象创建,线程不安全

示例代码:(饿汉式)

/**
 * 饿汉式 Singleton
 */
public class Singleton {

    // 1、私有化构造器
    private Singleton() {

    }

    // 2、创建类的对象,设置为static
    private static Singleton instance = new Singleton();

    // 3、提供public方法,返回类对象
    public static Singleton getInstance() {
        return instance;
    }

}

实例代码:(懒汉式)

/**
 * Singleton2
 */
public class Singleton2 {

    // 1、私有化构造器
    private Singleton2() {

    }

    // 2、声明类对象,设置为static
    private static Singleton2 instance;

    // 3、提供public方法,返回对象
    public static Singleton2 getInstance() {
        if(instance == null){
            instance = new Singleton2();
        }
        return instance;
    }
}

演示代码:(测试类)

/**
 * Test
 */
public class Test {

    public static void main(String[] args) {

        // 饿汉式
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        System.out.println(s1 == s2); // true

        // 懒汉式
        Singleton2 s3 = Singleton2.getInstance();
      //  Singleton2 s4 = Singleton2.getInstance();
       // System.out.println(s3 == s4); // true

    }
}

3、final

定义:

final表示“最终的”

修饰范围:类、属性、方法

| - final类“: 表示不能被继承、例如:String类、System类

|- final方法:表示不能被覆盖

|- final属性:表示常量、同时使用大写;注意:static final : 全局常量

面试题:(判断报错)

public class Something{
    public int addOne(final int x){
        return ++x; //报错,常量不能赋值
    }
}
class Other{
    public int i;
}

public class Something{
 	 public void addOne(final Other o){
         o.i++; //不报错,o对象地址没有改变
     }   
}

public static void main(String[] args){
    	Other o = new Other();
        new Something().addOne(o);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java类与继承 的相关文章

  • collection集合层次结构

  • Eclipse启动web项目非常缓慢,崩溃

    xml文件版本问题 xff0c 需要联网效验 xff0c 重写web xml xff0c 获取新的xml覆盖原来的就行
  • SQL语句库联系

    Studentdent S Sname Sage Ssex 学生表 Course C Cname T 课程表 SC S C score 成绩表 Teacher T Tname 教师表 1 查询 001 课程比 002 课程成绩高的所有学生的
  • Linux安装redis全步骤

    第一步 xff1a 下载安装包 访问https redis io download 到官网进行下载 第二步 xff1a 安装 1 通过远程管理工具 xff0c 将压缩包拷贝到Linux服务器中 xff0c 执行解压操作 2 进入解压文件目录
  • CMD连接数据库Orcal连接数据库进行操作

    Microsoft Windows 版本 6 1 7601 版权所有 c 2009 Microsoft Corporation 保留所有权利 C Users Administrator gt sqlplus sys root 64 loca
  • Nginx(linux安装)

    Nginx engine x 是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器 xff0c 也是一个 IMAP POP3 SMTP 代理服务器 在高连接并发的情况下 xff0c Nginx是Apa
  • linux操作redis

    Linux启动redis 1 为了保证原始redis config的准确性新建myRedis目录将redis config文件拷贝至myRedis下 root 64 linux1 bin ps ef grep redis root 1188
  • 经验呀,卡了我一个礼拜的经验

    今天处理html标签里的onclick功能的时候总是报错 xff1a Uncaught ReferenceError dosave is not defined 找了半天都没发现错在哪 xff0c 最后发现原来是我写法不对 xff0c 正确
  • onclick事件的传值 然后去执行ajax请求

    span class token punctuation span span class token function ajax span span class token punctuation span span class token
  • 牛客Java面试题

    请你说说Java和PHP的区别 xff1f 考察点 xff1a Java特性 参考回答 xff1a PHP暂时还不支持像Java那样JIT运行时编译热点代码 但是PHP具有opcache机制 能够把脚本对应的opcode缓存在内存 PHP7
  • 【mediasoup】demo与worker库交互channelRequest的实现

    cpp作者的mediasoup 比现在可以把worker作为一个库的要老一些 因此 与worker是以进程方式pipe通信的 D XTRANS soup mediasoup sfu cpp mediasoup WorkerAgent cpp
  • java面试题

    1 线程 线程创建方式继承Thread类和实现Runable接口 xff0c 重写run方法 使用callable和future创建线程 xff0c 使用线程池 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img r
  • 删除字符串中特定的字符

    通过字符串替换replace来实现特定字符串删除 span class token keyword package span com span class token punctuation span example span class
  • Git for Windows 国内下载站

    Git for Windows 国内下载站 Git for Windows 国内直接从官网 xff08 http git scm com download win xff09 下载比较困难 xff0c 需要翻墙 这里提供一个国内的下载站 x
  • You need to use a Theme.AppCompat theme (or descendant) with this activity

    报错 xff1a You need to use a Theme AppCompat theme or descendant with this activity 按照解释说明修改theme 初步推断再写Log v的时候报错应该和Log有关
  • 请计算1到100之内的所有质数

    请计算1到100之内的所有质数 JavaScript function hm3 var sum 61 0 得到一个数 for var i 61 2 i lt 61 100 i 43 43 var j 61 0 for var j 61 2
  • Java基础cmd窗口命令javac以及Java命令

    public static void main String args System out println 34 34 System out println 34 t1 显示客户信息 34 System out println 34 t2
  • eclipse输入天数计算周数

    计算周数 import java util Scanner public class Demo3 public static void main String args TODO Auto generated method stub Sca
  • 小测试,java的if条件语句和switch语句

    if条件语句和switch语句 import java util Scanner public class Demo4 public static void main String args TODO Auto generated meth
  • 求一个数的绝对值

    java求一个数的绝对值 public static void test3 Scanner sz 61 new Scanner System in System out println 34 请输入一个数 34 int a 61 sz ne

随机推荐

  • Java基础Test

    判断语句 1 打印 2 求两个浮点数之商 3 对一个数四舍五入取整 4 判断一个数是否为奇数 5 求一个数的绝对值 6 求两个数的最大值 7 求三个数的最大值 import java util Scanner public class Te
  • 【libuv】入门:queue work 的跨线程异步通信

    通过阅读2012年的uv book 入门 有中文版 Handles and Requests libuv works by the user expressing interest in particular events This is
  • 九九乘法表(java)

    九九乘法表 public class Cfb public static void main String args TODO Auto generated method stub printCfb public static void p
  • Java数组应用

    1 输出三位的水仙花数 2 输出n以内的数哪些数是质数 3 打印由 组成的等腰三角形 4 打印九九乘法表 5 用1元纸币兑换1分 xff0c 2分 xff0c 5分的硬币 xff0c 要求兑换50枚 问问尅有多少种组合 xff0c 每种组合
  • java的冒泡排序

    java的冒泡排序 TODO Auto generated method stub int a 61 11 10 5 7 9 3 5 2 6 bubbleSort a 调用排序方法 show a 调用现实方法 public static v
  • Java数组选择排序

    Java数组选择排序 public static void main String args TODO Auto generated method stub int a 61 4 3 5 8 3 9 13 7 int b 61 select
  • java在有序数组内添加一个数,并按顺序排列

    java在有序数组内添加一个数 xff0c 并按顺序排列 public static void main String args TODO Auto generated method stub int a 61 1 3 5 7 9 11 1
  • 求二维数组最大值

    JaVa求二维数组最大值 public static void main String args TODO Auto generated method stub int a 61 1 2 3 4 5 6 7 8 9 int re 61 ma
  • 打印杨辉三角形JAVA数组方法

    打印杨辉三角形 public static void main String args TODO Auto generated method stub putYhTriangle 10 打印杨辉三角形 public static void
  • 九宫格随机数Java数组

    无法判断是否重复了 public class Deno7 public static void main String args 声明一个3行3列的数组 int array 61 new int 3 3 int b for int i 61
  • 开发一个表示坐标点的类Point,该类对外提供以下公有实例方法:

    开发一个表示坐标点的类Point xff0c 该类对外提供以下公有实例方法 xff1a a 设置横纵坐标 b 偏移横坐标 c 偏移纵坐标 d 偏移横纵坐标 e 求本点到另外一个点的距离 勾股定理 f 求本点到另外一个点与x轴夹角的余弦值 g
  • 开发一个人类,具有实例属性身高,体重,星座,有如下实例方法:

    import java util Random 开发一个人类 xff0c 具有实例属性身高 xff0c 体重 xff0c 星座 xff0c 有如下实例方法 xff1a a 初始化方法 xff1a 内部随机产生身高 xff08 140 200
  • 【百度智能云】基于http3的xcdn 开放直播方案设计与实践

    大神 柯老师 现有的融合CDN 0 需要集成sdk sdk 是集成在端侧 缺点 sdk 对端侧有影响 多云模式下 sdk不互通 XCDN 设计目标 保持现有cdn的优势 承载各种业务 直播点播 让各家的cdn互通 cdn 厂家屏蔽了差异性
  • 开发一个表示图书的Book类

    Book类型 public class Book 1 开发一个表示图书的Book类 该类具有私有的实例属性 xff1a 编号 名称 作者 价格 出版社 出版日期等信息 并且该类为上述属性提供公有的get和set方法 xff0c 同时该类还具
  • ATM管理者操作界面

    ATM界面 import java util Scanner public class AccountView private AccountManger am 61 new AccountManger public void regist
  • Java类的操作

    银行账户类 package com github Mrtiang public class Account 创建账户属性 private int id private double balance private double annual
  • javase类的简单应用圆与圆柱类

    圆类 package com github MrtianSuper public class Circle private double radius 61 1 设置圆的半径 无参数构造方法 public Circle this radiu
  • Java银行账户可透支类

    账户类 java package com github Mrtiang public class Account 创建账户属性 private int id private double balance private double ann
  • java继承的概念与相关应用

    继承 1 继承概述 需求说明 xff1a 设计两个类 xff1a Dog和Penguin 问题 xff1a 其中属性和方法有大量的重复 xff0c 可以优化 xff0c 使用继承 继承使用的关键字 xff1a extends xff1a 扩
  • Java类与继承

    继承二 1 static关键字 使用场景 xff1a 当某些场景下不需要创建多个 内容 xff0c 每个类的实例对象共享一个 内容 时就可以使用static关键字来修饰 含义 xff1a static表示静态内容 xff0c 使用stati