推荐 最新
JayCoder

面向对象编程中,组合和聚合,一般是在类里面怎么实现的呢?

在面向对象开发的时候,组合和聚合,一般是在类里面怎么实现的呢? 是否是将B类的实例作为A类的一个属性进行实现的? "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240915/f270c50571273c65ac9b0f5f288c031f.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240915/0a90d20271a812594e872b90f9fc7255.png)

0
1
0
浏览量213
Mia好纠结

为什么很多不使用多继承?而是选择继承类+实现接口? 这个有什么好处?

我们知道在面向对象编程的时候,比如Bird既有叫的功能,又有飞的功能,可以通过继承Animal和实现飞的接口的功能实现: class Animal { shout() { } } interface OtherFunction { fly():void } class Bird extends Animal implements OtherFunction { shout() { console.log('呜呜') } fly() { console.log('飞到北京天安门') } } 问题1: 为什么很多不使用多继承?而是选择继承类+实现接口? 这个有什么好处? 如果还有其他类的功能比如: class Vegetarian { eat() { console.log('吃素') } } 问题2: Bird想要继承吃素的功能,请问这个如何进行实现呢?就不能进行继承了对吗?

0
1
0
浏览量194
WhatUpDanger

面向对象中如果没有Interface会怎样?

面向对象中如果没有Interface会怎样? 我们在面向对象开发的时候,经常看到Interface,我们知道它的意义是定义规范,规范传入的参数和返回的参数,方法等。 但是我们如果没有Interface也可以使用Class进行定义参数,返回值,为什么一定要有Interface?

0
1
0
浏览量143
PX_13

使用IDE(例如:VSCode)开发面向对象项目的时候,是否有显示类继承关系呢?不管是图形方式还是文本方式表示都可以?

在VSCode这样的IDE上,是否有地方可以展示一个类的继承关系? 比如: 我有代码: class A { } class B extends A { } class C extends B { } class D extends B { } 那么这里的继承关系如下: "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240917/8eedb8d02d076367c6d21fd53572d7be.png) 比如在使用IDE(例如:VSCode)开发面向对象项目的时候,是否有显示类继承关系呢?不管是图形方式还是文本方式表示都可以。

0
1
0
浏览量151
走你啊啊啊啊啊

面向对象编程时候:推荐给所有属性都加getter/setter方法,然后设置属性为私有吗?

我们知道面向对象设计项目的时候,特别是Java项目,属性一般有getter/setter方法, 但是有时候我们又是直接使用类实例的属性(直接点出) 请问下: 1、推荐给所有属性都加getter/setter方法,然后设置属性为私有吗? 2、什么场景对属性使用getter/setter,什么场景不对属性使用呢?

0
1
0
浏览量135
三千米的偷感

我们看到很多面向对象编程的优秀的项目,为何能设计的非常好呢?

我们看到很多面向对象编程的"优秀的项目" (https://link.segmentfault.com/?enc=TSXB322kwDO%2FKB5UXdAesg%3D%3D.QXBcWZY3fJMV72IMgW4jz3r3H0%2FP80%2FTeSxIzRfeByMzfSccEDyEEiF0eqfYz3hyVTHCf39pgqtTeT5D5Aj658ZhZu9D%2Bu9vw5KztaWJ22C3ApZ11CL8ZPjs0tIEsHyFpp2UhpTwrbq9WH63W47Org6NE00T2bGKAoYYtabKLtw%3D), 我们看到一个类继承一个类地,并且传递的类实例,看起来是相当庞大的项目,拥有相当多设计好的类,并且每个类设计的都很好: "QQ20240809-222225.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240917/6716dac33dbc6b38e34b1a746c311c8d.png) 但是比如我这等初级程序员,设计项目的时候, 1、根本很难把一个类设计的很好 2、想不到很多的接口继承或类实现接口的设计 3、比如在设计这个类的时候: class TypeScriptDocumentSymbolProvider implements vscode.DocumentSymbolProvider { public constructor( private readonly client: ITypeScriptServiceClient, private readonly cachedResponse: CachedResponse, ) { } public async provideDocumentSymbols(document: vscode.TextDocument, token: vscode.CancellationToken): Promise { const file = this.client.toOpenTsFilePath(document); if (!file) { return undefined; } const args: Proto.FileRequestArgs = { file }; const response = await this.cachedResponse.execute(document, () => this.client.execute('navtree', args, token)); if (response.type !== 'response' || !response.body?.childItems) { return undefined; } // The root represents the file. Ignore this when showing in the UI const result: vscode.DocumentSymbol[] = []; for (const item of response.body.childItems) { TypeScriptDocumentSymbolProvider.convertNavTree(document.uri, result, item); } return result; } 1)不会想到:"private readonly "这些字段的功能,不会纳入类设计 2)不会想到泛型的利用 private readonly cachedResponse: CachedResponse 3)比如这个参数:是有固定的类依据,如果是我的话,会可能直接想到传输string或者number这样的初级的类型:这些优秀的软件工程师为何就能思考到使用"document: vscode.TextDocument" 这样的高级参数呢? public async provideDocumentSymbols(document: vscode.TextDocument, token: vscode.CancellationToken) 4)比如返回的这个值,是这样,我看都看不懂,他们是基于什么来进行设计的呢?是在设计的时候就想要一个什么样的形式结果(eg. ": Promise")再进行设计的是吗? : Promise

0
1
0
浏览量127
开挂思想家

如何处理公用的代码:类还是辅助函数?

大佬们,我有一个疑问,如果有一些代码是公用的,那么我应该是创建一个公共的类去写这些代码,还是创建一个辅助函数去做这件事呢,如果按照面向对象的编程,又感觉写一个公共的类比较合适。比如我现在有两个方法是公用的,一个是把无限极结构转为树状结构,一个是把图片路径根据新旧系统分别拼接上新旧系统的域名。这两个方法都是在系统公用的,请问是写成辅助函数,还是写一个Comment类,类里面定义这两个方法去做这件事呢。 已经试过

0
1
0
浏览量20