Java编程网

分享 Java Web 开发相关知识

我是正在学习Java的JavaScript开发人员

尽管它们的名称,JavaScript和Java的共同点却比您预期的要少。是的,它们都是编程语言,是的,这当然意味着它们使用了很多相同的基础思想(所有编程语言也是如此),但是当我最近开始学习Java时,我发现了一个全新的基于类的系统不使用JavaScript。

如果您熟悉面向对象的编程范例,那么您会知道JavaScript有时会模仿类。例如,像这样,它为伪古典风格的小狗创建了一个构造函数:

const Puppy = function() {
this.age = 0;
this.legs = 4;
this.food = "puppy kibble";
};

Puppy.prototype.eat = function(){
return this.food;
}

window.Puppy = Puppy;

从那里,您可以使成年狗继承小狗的所有属性,并且通过多态性的力量,可以更改/删除/添加这些属性:

const Dog = function() {
Puppy.call(this);
this.age = 5;
this.food = "big dog kibble"
};

Dog.prototype = Object.create(Puppy.prototype);
Dob.prototype.constructor = Dog;

window.Dog = Dog;

从本质上讲,这是创建从构造函数继承的伪类的JavaScript方法。您甚至可以继续制作“高级狗”的另一个“类”,该类从小狗和/或狗那里继承所有东西,并添加诸如

this.food = "old fart kibble"

如果您觉得这很熟悉,那么是个好消息!您几乎已经了解了Java中的类。
Java取决于类。用这种语言,所有内容都是一个类,并且类包含用于创建类的对象实例的构造函数。这是一个精简的版本,向您展示我的意思:

public class Student {
//these private variables will be used by the constructor, and
//therefore by all instances of the objects created by the
//constructor
private int id;
private String name;
private int grade;

//this is a student constructor, which creates a new student
//object (when called w/new keyword, compiler creates new
//instance)

public Student(int id, String name, int grade) {
this.id = id;
this.name = name;
this.grade = grade;
}

在这里,我们要做的是为Student对象提供一种存在方式。所有学生对象都将具有构造函数具有的属性:id,名称和成绩。
如果我们希望学生有老师,我们还必须使用老师构造函数创建一个老师班级来制作老师对象,如下所示:

public class Teacher {
private int id;
private String name;

public Teacher(int id, String name) {
this.id = id;
this.name = name;
}

同样,教师的所有实例都将是具有id和name属性的对象。
现在在主班级中让学生和老师成为这样,我们将执行以下操作:

Student Billy = new Student(1, "Billy", 12);
Student Sam = new Student(2, "Sam", 4);

Teacher Carin = new Teacher(1, "Carin");
Teacher Matt = new Teacher(2, "Matt");

请注意,我们正在传递在构造函数中设置的每个参数的值(例如,学生的ID,名称和成绩,或老师的ID和名称)。

这是类在Java中如何工作的基础知识,听起来似乎很相似,但是与JavaScript中的伪类有所不同。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注