继承,设计模式,final

本文详细解析设计模式的概念与应用,重点讲解单例模式如何确保类对象的唯一性,及其在多程序操作配置文件场景中的实现与优势。同时,探讨类的继承、成员变量的区别以及构造函数的使用,最后介绍final关键字的作用和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



设计模式:解决某一种问题的一种思想。是一种行之有效的解决方式

23种模式

单例设计模式。
解决的问题:保证一个类的对象在内存中的唯一性
应用场景:多个程序都在操作同一个配置文件时,需要程序A操作后的结果,
         程序B要知道并继续基于A操作后的结果进行操作。
         前提是 数据都存储在配置文件对象中,要求程序A和程序B操作的配置文件对象是同一个。

保证一个类只能产生一个对象:
思路:
1,不让其他程序new 对象
2,在本类中自己new一个对象
3,对外提供让其他程序获取该对象的方式

步骤:
 1,将类中的构造函数私有化
 2,在本类中new一个对象
 3,定义一个方法返回该对象 ,之所以定义访问,就是为了可控
 private static final A a=nw A();
private A(){}
public static  A getInstance(延迟加载)
{
 return s;
}
另一种形式:
懒汉式: 用到方法再创建对象  ()
private static A a=null;
private A(){}
public static A getInstance()
{
 if(a==null)
    a=new A();
return s;
}


继承:
  1,提高了代码的复用性
  2,让类与类之间产生了关系,为第三个多态提供了前提

Java支持单继承,不直接支持多继承

单继承:一个类只有一个父类
多继承:一个类可以有多个父类,Java不直接支持
  优势: 可以让子类具备更多的功能
  弊端:调用的不确定性

多层次继承:
先看顶层
使用时看最下层

什么时候定义继承?
 当事物之间存在着所属关系时,可以通过继承来体现这个关系。

成员变量:

当子父类中出现了同名的成员变量,用关键字super来区分。
this:代表的是本来的引用
super:代表的是父类的那片空

子父类的方法的特点:
特殊情况:
当子父类中出现一模一样的方法时,
子类对象运行的是子类的方法。
这种特殊情况:称之为覆盖 override 复写 重写
覆盖:返回值类型,函数名,参数列表都一样

覆盖使用的注意事项:
1,子类方法覆盖父类方法时,必须保证权限大于父类权限
2,静态只能覆盖静态,或者被静态覆盖·


子类的实例化过程:
   创建子类对象时,父类中的空参数构造函数也运行了
 因为子类中所有的构造函数的第一行默认都有一个隐式的super();语句。
 调用本类中的构造函数用this(实参列表)语句,,调用父类中的构造函数用super(实参列表);

子类继承父类,所以要对父类进行初始化。

注意:当父类中没有空参数构造函数时,子类需要通过显示定义super语句指定要访问的父类中的
     构造函数。
注意:用来调用父类构造函数的super语句在子类构造函数中必须定义在第一行,因为父类的初始化要先完成

问题:
1,this和super用于调用构造函数,可以同时存在吗?
   不可以,因为他们只能定义在第一行。
2,为什么要定义在第一行?
   因为初始化动作要先执行


final关键字 最终。
1,final修饰符,可以修饰类,修饰方法,修饰变量
2,final修饰的类不能被继承
3,final修饰的方法不可以被覆盖
4,final 修饰的变量是一个常量,只能被赋值一次
   当使用的数据不变时,需要定义阅读性强的名称来表示该数据,并将该shujufinal化,
  被final修饰的变量 名称规范是:所以字母都大写,如果由多个单词组成,需要通过_进行分隔
 

全局常量:public static final int num=5;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值