Skip to content

Commit edbdc9b

Browse files
committed
Tutorials - Translation PT-BR - Upper Types Bounds
1 parent 3ecc555 commit edbdc9b

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
layout: tutorial
3+
title: Limitante Superior de Tipos
4+
5+
disqus: true
6+
7+
tutorial: scala-tour
8+
num: 19
9+
tutorial-next: lower-type-bounds
10+
tutorial-previous: variances
11+
language: pt-br
12+
---
13+
14+
Em scala, [parâmetros de tipos](generic-classes.html) e [tipos abstratos](abstract-types.html) podem ser restringidos por um limitante de tipo. Tal limitante de tipo limita os valores concretos de uma variável de tipo e possivelmente revela mais informações sobre os membros de determinados tipos. Um _limitante superiror de tipos_ `T <: A` declare que a variável tipo `T` refere-se a um subtipo do tipo `A`.
15+
Aqui um exemplo que demonstra um limitante superior de tipo para um parâmetro de tipo da classe `Cage`:
16+
17+
```tut
18+
abstract class Animal {
19+
def name: String
20+
}
21+
22+
abstract class Pet extends Animal {}
23+
24+
class Gato extends Pet {
25+
override def name: String = "Gato"
26+
}
27+
28+
class Cachorro extends Pet {
29+
override def name: String = "Cachorro"
30+
}
31+
32+
class Leao extends Animal {
33+
override def name: String = "Leao"
34+
}
35+
36+
class Jaula[P <: Pet](p: P) {
37+
def pet: P = p
38+
}
39+
40+
object Main extends App {
41+
var jaulaCachorro = new Jaula[Cachorro](new Cachorro)
42+
var jaulaGato = new Jaula[Gato](new Gato)
43+
/* Não é possível colocar Leao em Jaula pois Leao não estende Pet. */
44+
// var jaulaLeao = new Jaula[Leao](new Leao)
45+
}
46+
```
47+
48+
Um instância da classe `Jaula` pode conter um animal, porém com um limite superior do tipo `Pet`. Um animal to tipo `Leao` não é um pet, pois não estende `Pet`, então não pode ser colocado em uma Jaula.
49+
50+
O uso de limitantes inferiores de tipo é discutido [aqui](lower-type-bounds.html).

0 commit comments

Comments
 (0)