首页 > 其他分享 >day07

day07

时间:2023-03-18 16:47:35浏览次数:35  
标签:Java 对象 子类 day07 C++ 方法 final

day07

面向对象

面向对象三大特性:封装、继承、多态

类设计技巧

1.一定要保证数据私有

这是最重要的;绝对不要破坏封装性。

2.一定要对数据初始化

Java不对局部变量进行初始化,但是会对对象的实例域进行初始化。最好不要依赖于系统的默认值,而是应该显式地初始化所有的数据,具体的初始化方式可以是提供默认值,也可以是在所有构造器中设置默认值。

3.不要在类中使用过多的基本类型

就是说,用其他的类代替多个相关的基本类型的使用。这样会使类更加易于理解且易于修改。

4.不是所有的域都需要独立的域访问器和域更改器

在对象中,常常包含一些不希望别人获得或设置的实例域(可不设置get、set方法)

5.将职责过多的类进行分解

如果明显地可以将一个复杂的类分解成两个更为简单的类,就应该将其分解

6.类名和方法名要能够体现它们的职责

与变量应该有一个能够反映其含义的名字一样,类也应该如此;

命名类名的良好习惯是采用一个名词,类用名词,方法用动词

不可变的类:没有方法能修改对象的状态

有些方法并不是更改对象,而是返回状态已修改的新对象。

更改对象的问题在于,如果多个线程试图同时更新一个对象,就会发生并发更改。其结果是不可预料的。如果类是不可变的,就可以安全地在多个线程间共享其对象。因此,要尽可能让类是不可变的

继承

C++注释:Java与C++定义继承类的方式十分相似。Java用关键字extends代替了C++中的冒号(:)。在Java中,所有的继承都是公有继承,而没有C++中的私有继承和保护继承

this与super

关键字this有两个用途:一是引用隐式参数,二是调用该类其他的构造器。

super关键字也有两个用途:一是调用超类的方法,二是调用超类的构造器。

this()和super()都必须放在构造器第一行,所以this与super不能同时存在

子类方法重载

C++注释:在Java中,不需要将方法声明为虚拟方法。动态绑定是默认的处理方式。如果不希望让一个方法具有虚拟特征,可以将它标记为final

在覆盖一个方法的时候,子类方法不能低于超类方法的可见性。特别是,如果超类方法是public,子类方法一定要声明为public。

多态

在Java中,子类数组的引用可以转换成超类数组的引用,而不需要采用强制类型转换

阻止继承:final类和方法

不允许扩展的类被称为final类。如果在定义类的时候使用了final修饰符就表明这个类是final类。(final类中的所有方法自动地成为final方法)。

域也可以被声明为final。对于final域来说,构造对象之后就不允许改变它们的值了。不过,如果将一个类声明为final,只有其中的方法自动地成为final,而不包括域。

将方法或类声明为final主要目的是:确保它们不会在子类中改变语义。

String类也是final类,这意味着不允许任何人定义String的子类。换言之,如果有一个String的引用,它引用的一定是一个String对象,而不可能是其他类的对象。

类的强制类型转换

对象引用的转换语法与数值表达式的类型转换类似,仅需要用一对圆括号将目标类名括起来,并放置在需要转换的对象引用之前就可以了。

包含一个或多个抽象方法的类本身必须被声明为抽象的

抽象类

C++注释:在C++中,有一种在尾部用=0标记的抽象方法,称为纯虚函数,只要有一个纯虚函数,这个类就是抽象类。

抽象类不能被实例化。也就是说,如果将一个类声明为abstract,就不能创建这个类的对象。

包含一个或多个抽象方法的类本身必须被声明为抽象的。

抽象方法充当着占位的角色,它们的具体实现在子类中。

类即使不含抽象方法,也可以将类声明为抽象类。

标签:Java,对象,子类,day07,C++,方法,final
From: https://www.cnblogs.com/xkh-blogs/p/17231086.html

相关文章

  • day07
    day07面向对象面向对象三大特性:封装、继承、多态类设计技巧1.一定要保证数据私有这是最重要的;绝对不要破坏封装性。2.一定要对数据初始化Java不对局部变量进行初始......
  • Day07-Request&Response
    Request&Response今日目标掌握Request对象的概念与使用掌握Response对象的概念与使用能够完成用户登录注册案例的实现能够完成SqlSessionFactory工具类的抽取1.R......
  • day07 (2023.3.7)
    1.方法小练习: 运行结果:2.方法重载: 3.递归 4.面向对象编程(OOP)  5.类 运行结果: 6.构造方法 7.构造方法的重载 结果循环,进入面向对象。小......
  • 路飞项目---day07()
    昨日回顾#GIt内容大回顾#1版本管理软件:git,svn -代码合并-代码版本管理-协同开发,合并代码#2git跟svn区别#3git安装:相应平台软件,下载完成,一路下......
  • day07-MyBatis的关联映射01
    MyBatis的关联映射Mybatis的关联映射实际的开发中,对数据库的操作常常会涉及到多张表,这在面向对象中就涉及到了对象与对象之间的关联关系。针对多表之间的操作,MyBatis提......
  • 02_07_Java语音进阶||day07_等待与唤醒案例、线程池、Lambda表达式
    第一章等待唤醒机制1.1线程间通信概念:多个线程在处理同一个资源(包子),但是处理的动作(线程的任务)却不相同。比如:线程A用来生产包子的,线程B用来吃包子的,包子可以理解......
  • 【jeecg-boot项目开发crm】:day07JeecgBoot-零基础入门视频-05代码生成(树模型和一对多
    代码生成(树模型和一对多模型,一对多三套模型)树模型生成流程图前期工作:先将页面搭建好页面中代码生成一对多生成流程图只能选主表将生成代码中的vue拷贝到前端目录下接下来......
  • 前端之Vue day07 混入、插件、elementui、Router、Vuex
    一、Props补充1.父传子在子组件标签上起自定义属性使用数组就不演示了,太简单了2.限制传入的数据类类型使用对象同样,展示过的3.props补充就是套对象,加以限制prop......
  • 学习打卡day07-面向对象
    1,基本知识面向过程编程:开发一个一个的方法,有数据要处理了,我们就调方法来处理。强调的是做事情的每一个步骤,逐个步骤完成功能。侧重于步骤面向对象编程:开发一个一个......
  • day07
      本周内容:day01:流程控制0:补充(了解)短路运算:偷懒原则,偷懒到哪个位置,就把当前位置的值返回深浅copy1、循环之while循环......