使用抽象和界面(Use of abstract and interface)
这是我在许多访谈中遇到的非常基本但深思熟虑的问题为什么我们真的想要抽象类和接口,即使我们可以通过简单的继承来实现。 (技术上说通过创建函数并覆盖它)。如果没有在OOPS中创建抽象类和接口,将会留下什么
谢谢
This is very basic but thoughtful question i come across in many interviews Why we really want abstract classes and interface even we can make there implementation by simply inheritance. (technically saying by making functions and overriding it).what would left without creating abstract classes and interface in OOPS
Thanks
原文:https://stackoverflow.com/questions/9327497
最满意答案
我是对的,您希望每个
StudentForm
属于一个City
吗? 只有这样,您才能将city_id存储在StudentForm
。 但那么你的模型将是:class StudentForm < ActiceRecord::Base belongs_to :city delegate :name, to: :city. prefix: true end class City < ActiceRecord::Base has_many :student_forms end
你可以访问该城市的表格名称
form = StudentForm.first puts form.city.name
要么
puts form.city_name
在您的示例中,每个
StudentForm
has_many:cities
,因此City
需要对StudentForm
的引用(列student_form_id
)。Am I right, that you want each
StudentForm
to belong to oneCity
? Only then, you can store city_id inStudentForm
. But then your models would be:class StudentForm < ActiceRecord::Base belongs_to :city delegate :name, to: :city. prefix: true end class City < ActiceRecord::Base has_many :student_forms end
and you could access the city's name of a form with
form = StudentForm.first puts form.city.name
or
puts form.city_name
In your example, each
StudentForm
has_many:cities
, soCity
needs a reference toStudentForm
(a columnstudent_form_id
).
相关问答
更多-
这似乎是一个简单的外部联接...... select aval,bval,cval from d left join a on a.aid = d.aid left join b on b.bid = d.bid left join C on c.cid = d.cid 也许您需要了解联接的工作原理。 这是一篇很棒的文章 并查询结果。 This appears to be a simple outer join... select aval,bval,cval from d lef ...
-
我是对的,您希望每个StudentForm属于一个 City吗? 只有这样,您才能将city_id存储在StudentForm 。 但那么你的模型将是: class StudentForm < ActiceRecord::Base belongs_to :city delegate :name, to: :city. prefix: true end class City < ActiceRecord::Base has_many :student_forms end 你可以访问该城市的表 ...
-
您应该加入上面的“加入表”所需的数据。 然后,您可以使用MAXDate通过附加子选择过滤掉不再需要的行。 返回“加入表”的连接需要通过ID和日期来确保您只获得所需的数据! 希望这可以帮助 : SELECT p.*, p1.* FROM Table01 p INNER JOIN Table02 p1 ON p.Id = p1.Id INNER JOIN ( SELECT s.id, MAX(dt_date) MaxDate FROM Table02 s GROUP BY ...
-
使用objects.select_related(): questions = Question.objects.select_related().filter(vote__creator=3).values() use objects.select_related(): questions = Question.objects.select_related().filter(vote__creator=3).values()
-
with expr(a,b) as ( select t.val, u.val from (values(0,1)) as t(id,val) join (values(0,2)) as u(id,val) on t.id = u.id ) insert into table(column) select a as vals from expr union all select b from expr with expr(a,b) as ( select t. ...
-
你可以改变SelectList list = new SelectList (lob, "lobname"); 代码到这样的东西? var list = logb.Select(x => new SelectListItem { Value = x.LobID.ToString(), Text = x.LobName }).ToList(); 这意味着你必须像这样将LobId添加到原始选择 var lob = from l in db.L ...
-
显示外键是引用表的第二列中的值的表(Display table where foreign keys are values from second column of referenced tables)[2022-03-09]
不完全是,至少没有使用复杂动态SQL的函数。 但是通过适当的命名约定 ,您可以简化这些方面的事情: [table worker] worker_id [PK] | worker | department_id [FK] ----------------+--------+----------- 1 | Smith | 2 [table department] department_id [PK] | department ---------------------+------ ... -
WITH X AS ( SELECT A.[Appeal_ID], A.[Member_ID],Y.[FiscalYear], Y.[Amount] FROM [dbo].[Appeals] A LEFT JOIN [dbo].[Yearly_Gift] Y ON Y.[Member_ID] = A.[Member_ID] ) SELECT X.[Appeal_ID], X.[Member_ID],Y.[FiscalYear], X.[Amount] FROM X LEFT JO ...
-
您可以将每个查询用作派生表并加入它们: SELECT ta.*, tb.* FROM (select componentes_process.id_comp_process,componentes_process.id_intervencao,componentes_process.id_equip, componentes_equip.nome, sum(componentes_process.quantidade) as quantidade from manutencao.componentes_e ...
-
在一列上显示最大值但从多个表中显示多个(display max on one column but display multiple from multiple tables)[2022-04-15]
您可以尝试使用聚合函数MAX()作为窗口函数: SELECT column1, column2, MAX(column3) OVER ( PARTITION BY column1 ) AS MAXcolumn3 FROM table1; 我不知道你的表的精确架构,所以我不知道上面是否会返回重复。 如果您有两个表,那么您可以使用原始查询并使用子查询或CTE执行类似操作: WITH cte AS ( SELECT t1.column1, t1.column2, MAX(t2.column3) as ...