La deuxième fois, c'est une classe ou une méthode.
paiza.io C'est plus facile à exécuter dans un tel cas
La version à laquelle cela a été fait est la suivante. Vous pouvez vérifier la version depuis Aide.
Ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux] Java openjdk version "12" 2019-03-19
Java et Ruby sont tous deux publics, protégés et privés, mais comme le concept est différent, les termes sont séparés.
public est le même et n'a pas de restrictions, mais protégé et privé sont différents.
Pour plus de détails, je l'ai écrit dans une interprétation de type ingénieur Java en me référant à here.
Le concept de package privé ne semble pas exister dans Ruby.
Il y a public (non décrit) et privé. Je ne vois pas la situation où j'utilise une classe qui n'est pas une classe interne comme une classe privée parce que je ne semble pas avoir la chance de l'utiliser sur le Web (impression jusqu'à présent). Vous apprendrez également de quel type de portée il s'agira si nécessaire.
J'ai l'impression que je n'ai pas utilisé de classes internes en Java récemment, donc je ne couvrirai pas la portée de cet article. Notez s'il vous plaît.
Il existe public (non décrit), protégé et privé.
Il semble bon de penser que le public est le même, alors je vais décrire deux choses différentes.
private Je vais le mettre de la personne qui a été facile de vérifier la différence. Tout d'abord, veuillez consulter l'exemple de code ci-dessous.
class A
private def print
p "a"
end
end
class B < A
def print2
print
end
end
b = B.new
b.print2
Contrairement à Java, le privé de Ruby fonctionne même si vous l'utilisez à partir d'une autre classe.
En regardant l'article auquel j'ai fait référence, il est dit que la méthode définie sur private ne peut être appelée que dans le format de fonction
, donc elle peut également être appelée à partir de la sous-classe qui peut être appelée dans le format de fonction.
Cela fonctionne bien, mais c'est un peu désagréable pour un ingénieur Java, alors soyez prudent.
Peut-être aurais-je pu le faire si je pensais ne pas pouvoir y accéder dans d'autres cas.
protected J'ai fait beaucoup de recherches, mais je ne l'ai pas vu parce que souvent je ne le comprenais pas et j'ai vu un tweet disant que le créateur, Matz, ne l'intégrerait pas maintenant.
Je pense que c'est normal pour les débutants de ne pas le voir tant qu'ils n'ont pas assisté à une scène dont ils doivent absolument se souvenir.
Il n'y a pas de problème particulier ici.
Le côté utilisateur le génère et l'utilise sous la forme de nom de classe.new
.
public class A {
}
class A
end
Cependant, Ruby peut étendre la classe de la manière suivante, donc si vous voulez le faire, vous pouvez faire n'importe quoi.
class A
def print
p "a"
end
end
class A
def print2
p "b"
end
end
a = A.new
a.print
a.print2
Vous pouvez également vous étendre à l'instance créée, afin de créer un monde qui est vraiment n'importe quoi. Cela peut être limité à l'instance générée, on ne peut donc pas dire qu'elle est inutile.
class A
def print
p "a"
end
end
a = A.new
#Déclarer comme une classe singulière
class << a
def print2
p "b"
end
end
a.print
a.print2
L'héritage est un héritage unique en Java et Ruby.
Cependant, comme Java peut avoir plusieurs interfaces, il est possible de faire quelque chose d'un peu forcé (en particulier Java 8 ou supérieur).
Ruby ne semble pas prendre en charge les classes abstraites, les méthodes et les interfaces linguistiquement, donc l'héritage complet est un héritage de classe unique. Il y a mixin et délégation (vous devez utiliser une bibliothèque), mais il semble que ce sont des concepts complètement différents, et il semble préférable de les considérer comme séparés de l'héritage. (Non couvert dans cet article, le module est également exclu une fois)
public class A extends B {
}
class A < B
end
Les méthodes sont divisées entre celles sans argument et celles avec.
Ruby vous permet d'omettre ()
.
Notez que Ruby ne nécessite pas de déclaration de valeur de retour, il est donc difficile à comprendre sans écrire Docs.
La valeur de retour de Ruby décrit le retour, ou le résultat de la dernière expression évaluée est retourné.
Java doit décrire clairement le retour.
public void method() {
System.out.println("a");
}
def method
print "a"
end
Ruby peut être omis même lors de l'appel. Je suis surpris, donc je pense qu'il est préférable de définir une règle quant au type de description à utiliser sans elle.
method()
method
Ruby peut omettre ()
même s'il y a un argument.
La même chose est vraie pour l'appelant.
public void method(String a, String b) {
System.out.print(a);
System.out.print(b);
}
def method a, b
print a
print b
end
Vous ne pouvez pas le faire en Java, mais dans Ruby, vous pouvez déclarer une méthode à l'intérieur d'une méthode. Il peut être utilisé après l'imbrication et sa déclaration, et ne peut pas être utilisé avant.
def method
print "a"
def methtod2
print "b"
end
methtod2
end
Ruby permet aux méthodes d'appartenir à des classes. En Java, on a l'impression de pouvoir l'utiliser de la même manière qu'une méthode statique (je pense que l'idée est différente).
public class A {
public static void main() {
System.out.print("a");
}
}
class A
def self.method
print "a"
end
end
A::method
Si vous la déclarez comme une méthode singulière, il est possible de créer toutes ces méthodes de classe. Étant donné que la référence dit qu'elle convient pour définir plusieurs méthodes, il semble préférable de la diviser d'une manière facile à comprendre.
class A
def print
p "a"
end
end
class << A
def print2
p "b"
end
end
a = A.new
a.print
A::print2
Si vous souhaitez le faire d'une seule manière, vous pouvez générer une méthode de classe sans la déclarer à partir de la classe.
def A.print2
p "b"
end
Je l'ai écrit pour le moment, mais j'ai senti qu'il était plus facile de créer la cause du chaos, donc je devais fermement créer et appliquer des règles d'équipe. Et il y a des choses que je n'ai pas encore écrites, mais pour le moment, j'ai senti que c'était juste assez pour que les débutants commencent, alors je vais m'arrêter ici.
Java est si solide que la liberté de Ruby est déroutante.