随笔 - 95,  文章 - 0,  评论 - 0,  阅读 - 14253

第十一天
※静态类型
- -根据入参变量的编译时类型决定调用哪个方法
(谁入参到这个方法就根据谁的编译时类型来决定)
※动态类型
- -根据调用方法的引用变量的运行时类型决定调用哪个类
(谁调用了这个方法就根据谁的运行时类型来决定)

final关键字
- -用于修饰类、变量、常量、方法
- -final修饰类 为最终类 ,则不能给子类继承
- -final修饰方法,则该方法不能被重写
- -final修饰变量,要先进行赋值,赋值后该变量的值不能被修改
--类型为基本数据类型,赋值后该变量的值不能被修改
--类型为引用类型,则不能赋值一个新的对象,但是可以修改对象中成员变量的数值
- -final修饰局部变量,不要求先进行赋值,但是赋值后该变量的值不能被修改

单例模式
用于限定当前类只能生成一个实例对象,则这个类称为单例类
- -懒汉式
- -饿汉式
--1、设置构造器为私有化 不允许外部类来创建对象
--2、提供一个静态的公有化的方法来获取唯一的对象
--3、判断sin是否为空,目的是确保对象是唯一的

※抽象类
- -抽象类是作为一个模板给子类继承,可以定义共通的属性、方法以及抽象的方法
- -定义抽象类使用abstract关键字定义,抽象方法同理
- -1、子类必须重写抽象类的抽象法,除非子类为抽象类
- -2、抽象类不能被实例化的,只能new子类的对象
- -3、抽象类可以定义普通类中能定义的东西(初始化、变量、构造器、普通方法、抽象方法。。)

 

抽象类是作为一个模板,可以定义抽象方法以及其他东西
接口是一个特殊的抽象类,因为接口比抽象类更加纯粹(接口中不能定义普通方法、构造器、变量)
接口是一种规范,不能创建接口的对象,不能实例化
--不能定义变量,但是可以定义常量(默认也是常量)不写则默认省略public static final
--不能定义普通方法//Abstract methods do not specify a body
--定义方法时可以省略public abstract
--接口不能定义构造器Interfaces cannot have constructors
--不能定义初始化块
--类实现接口,要么该类实现了接口的抽象方法,要么该类为抽象类
--接口可以继承接口,并且接口可以多继承,注意使用extends来进行继承

类与对象的概念?
类是抽象的、而对象是真实存在的
类是由某个具有共通的特征的多个实体抽象而成
对象是某种类型或者群体的真实的个例

抽象类:比普通的类还要抽象、体现在在于抽象类中可以定义抽象方法
抽象方法:知道有对应的功能,但是不知道该功能是怎么实现的

举例:
人类【抽象类】--工作的行为【抽象的行为】
老师--工作--》教书育人
程序员--工作--》写程序敲代码
农民--工作--》种菜务农

抽象主要就是作为一个模板、给子类去继承
--不能出初始化抽象的对象,但是可以创建抽象类子类的对象 抽象类是不能创建对象的
--如果子类继承抽象类,则要么子类实现抽象方法,要么就定义为抽象类
--抽象类和普通类有没有什么区别?
抽象类中可以定义抽象方法、普通类不可以定义抽象方法
普通类中能定义的操作、抽象类都能定义【有实现的方法、构造器、初始化块、变量、常量】

抽象类为什么不能实例化,不能创建对象?
类(对象是不确定)
类是抽象的,抽象类是比类更抽象(类是不确定)

什么时候使用普通类?什么时候使用抽象类?【模板】
一般情况下都是使用普通类
抽象类:
1、明确有某个功能(抽象方法),但是不明确怎么实现,需要给子类实现的时候
2、需要作为一个模板给子类继承时

人类
--名字
--性别
--睡觉()【具体实现的】
--吃饭()【具体实现的】
--工作【抽象方法】
--。。。

1、什么是多态?多态有什么特点?【会显示子类的行为特征】
在Java中多态指的是行为的多样化和多态性
--多态是编译时类型和运行时类型不一致而导致的现象
--父类的引用指向子类的对象
多态的出现有一定的前提:
父类的引用指向子类的对象
子类有重写父类的方法

2、多态作用和应用?
简化代码、降低维护成本、通过多态可以方便程序的扩展

3、什么是运行时类型?什么是编译时类型?【有什么用】
编译时类型就是定义的引用变量的类型;
运行时类型就是引用变量中存放的对象的类型
编译时是根据编译时类型进行校验语法
调用方法时是通过运行时类型的对象来调用方法

4、在使用对象调用方法时,如何确定调用哪个类的方法?
--确定有没有多态?
A a = new A();
a.test();//明确是调用A类中的方法
--有多态[运行时类型确定在哪个类中调用方法]
A a = new B();
a.test();//明确是调用B类中的方法
总结:不管有没有多态,调用哪个类的方法,直接看运行时类型即可

5、明确类之后,如何确定调用哪个方法?
A a = new A();
a.test(B b);//调用B参数的方法
总结:类确定后,是根据入参变量的编译时类型来调用方法

4-5:总结--先确定类、确定方法
根据运行时类型确定类、根据编译时类型确定方法

posted on   天涯何  阅读(49)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示