diff --git a/core/modules/locale/src/Tests/LocaleContentTest.php b/core/modules/locale/src/Tests/LocaleContentTest.php
index 1bef062..03afbdd 100644
--- a/core/modules/locale/src/Tests/LocaleContentTest.php
+++ b/core/modules/locale/src/Tests/LocaleContentTest.php
@@ -64,7 +64,7 @@ public function testContentTypeLanguageConfiguration() {
     // User to add and remove language.
     $admin_user = $this->drupalCreateUser(array('administer languages', 'administer content types', 'access administration pages'));
     // User to create a node.
-    $web_user = $this->drupalCreateUser(array("create {$type1->type} content", "create {$type2->type} content", "edit any {$type2->type} content"));
+    $web_user = $this->drupalCreateUser(array("create {$type1->id()} content", "create {$type2->id()} content", "edit any {$type2->id()} content"));
 
     // Add custom language.
     $this->drupalLogin($admin_user);
@@ -81,24 +81,24 @@ public function testContentTypeLanguageConfiguration() {
     $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
 
     // Set the content type to use multilingual support.
-    $this->drupalGet("admin/structure/types/manage/{$type2->type}");
+    $this->drupalGet("admin/structure/types/manage/{$type2->id()}");
     $this->assertText(t('Language settings'), 'Multilingual support widget present on content type configuration form.');
     $edit = array(
       'language_configuration[language_show]' => TRUE,
     );
-    $this->drupalPostForm("admin/structure/types/manage/{$type2->type}", $edit, t('Save content type'));
-    $this->assertRaw(t('The content type %type has been updated.', array('%type' => $type2->name)));
+    $this->drupalPostForm("admin/structure/types/manage/{$type2->id()}", $edit, t('Save content type'));
+    $this->assertRaw(t('The content type %type has been updated.', array('%type' => $type2->get('name'))));
     $this->drupalLogout();
     \Drupal::languageManager()->reset();
 
     // Verify language selection is not present on the node add form.
     $this->drupalLogin($web_user);
-    $this->drupalGet("node/add/{$type1->type}");
+    $this->drupalGet("node/add/{$type1->id()}");
     // Verify language select list is not present.
     $this->assertNoFieldByName('language', NULL, 'Language select not present on the node add form.');
 
     // Verify language selection appears on the node add form.
-    $this->drupalGet("node/add/{$type2->type}");
+    $this->drupalGet("node/add/{$type2->id()}");
     // Verify language select list is present.
     $this->assertFieldByName('langcode', NULL, 'Language select present on the node add form.');
     // Ensure language appears.
@@ -108,7 +108,7 @@ public function testContentTypeLanguageConfiguration() {
     $node_title = $this->randomMachineName();
     $node_body = $this->randomMachineName();
     $edit = array(
-      'type' => $type2->type,
+      'type' => $type2->id(),
       'title' => $node_title,
       'body' => array(array('value' => $node_body)),
       'langcode' => $langcode,
@@ -137,7 +137,7 @@ public function testContentTypeDirLang() {
     // User to add and remove language.
     $admin_user = $this->drupalCreateUser(array('administer languages', 'administer content types', 'access administration pages'));
     // User to create a node.
-    $web_user = $this->drupalCreateUser(array("create {$type->type} content", "edit own {$type->type} content"));
+    $web_user = $this->drupalCreateUser(array("create {$type->id()} content", "edit own {$type->id()} content"));
 
     // Login as admin.
     $this->drupalLogin($admin_user);
@@ -154,12 +154,12 @@ public function testContentTypeDirLang() {
     \Drupal::languageManager()->reset();
 
     // Set the content type to use multilingual support.
-    $this->drupalGet("admin/structure/types/manage/{$type->type}");
+    $this->drupalGet("admin/structure/types/manage/{$type->id()}");
     $edit = array(
       'language_configuration[language_show]' => TRUE,
     );
-    $this->drupalPostForm("admin/structure/types/manage/{$type->type}", $edit, t('Save content type'));
-    $this->assertRaw(t('The content type %type has been updated.', array('%type' => $type->name)));
+    $this->drupalPostForm("admin/structure/types/manage/{$type->id()}", $edit, t('Save content type'));
+    $this->assertRaw(t('The content type %type has been updated.', array('%type' => $type->get('name'))));
     $this->drupalLogout();
 
     // Login as web user to add new node.
@@ -170,7 +170,7 @@ public function testContentTypeDirLang() {
     foreach (array('en', 'es', 'ar') as $langcode) {
       $nodes[$langcode] = $this->drupalCreateNode(array(
         'langcode' => $langcode,
-        'type' => $type->type,
+        'type' => $type->id(),
         'promote' => NODE_PROMOTED,
       ));
     }
diff --git a/core/modules/node/src/Entity/NodeType.php b/core/modules/node/src/Entity/NodeType.php
index e33c1ec..33ecd4b 100644
--- a/core/modules/node/src/Entity/NodeType.php
+++ b/core/modules/node/src/Entity/NodeType.php
@@ -50,7 +50,7 @@ class NodeType extends ConfigEntityBundleBase implements NodeTypeInterface {
    *
    * @todo Rename to $id.
    */
-  public $type;
+  protected $type;
 
   /**
    * The human-readable name of the node type.
@@ -59,21 +59,21 @@ class NodeType extends ConfigEntityBundleBase implements NodeTypeInterface {
    *
    * @todo Rename to $label.
    */
-  public $name;
+  protected $name;
 
   /**
    * A brief description of this node type.
    *
    * @var string
    */
-  public $description;
+  protected $description;
 
   /**
    * Help information shown to the user when creating a Node of this type.
    *
    * @var string
    */
-  public $help;
+  protected $help;
 
   /**
    * Default value of the 'Create new revision' checkbox of this node type.
diff --git a/core/modules/node/src/Tests/NodeTypeTest.php b/core/modules/node/src/Tests/NodeTypeTest.php
index d0d5d54..4ae0187 100644
--- a/core/modules/node/src/Tests/NodeTypeTest.php
+++ b/core/modules/node/src/Tests/NodeTypeTest.php
@@ -49,14 +49,14 @@ function testNodeTypeCreation() {
     // Create a content type programmaticaly.
     $type = $this->drupalCreateContentType();
 
-    $type_exists = (bool) entity_load('node_type', $type->type);
+    $type_exists = (bool) entity_load('node_type', $type->id());
     $this->assertTrue($type_exists, 'The new content type has been created in the database.');
 
     // Login a test user.
-    $web_user = $this->drupalCreateUser(array('create ' . $type->name . ' content'));
+    $web_user = $this->drupalCreateUser(array('create ' . $type->get('name') . ' content'));
     $this->drupalLogin($web_user);
 
-    $this->drupalGet('node/add/' . $type->type);
+    $this->drupalGet('node/add/' . $type->id());
     $this->assertResponse(200, 'The new content type can be accessed at node/add.');
 
     // Create a content type via the user interface.
@@ -137,11 +137,11 @@ function testNodeTypeDeletion() {
     $this->drupalLogin($web_user);
 
     // Add a new node of this type.
-    $node = $this->drupalCreateNode(array('type' => $type->type));
+    $node = $this->drupalCreateNode(array('type' => $type->id()));
     // Attempt to delete the content type, which should not be allowed.
-    $this->drupalGet('admin/structure/types/manage/' . $type->name . '/delete');
+    $this->drupalGet('admin/structure/types/manage/' . $type->get('name') . '/delete');
     $this->assertRaw(
-      t('%type is used by 1 piece of content on your site. You can not remove this content type until you have removed all of the %type content.', array('%type' => $type->name)),
+      t('%type is used by 1 piece of content on your site. You can not remove this content type until you have removed all of the %type content.', array('%type' => $type->get('name'))),
       'The content type will not be deleted until all nodes of that type are removed.'
     );
     $this->assertNoText(t('This action cannot be undone.'), 'The node type deletion confirmation form is not available.');
@@ -149,9 +149,9 @@ function testNodeTypeDeletion() {
     // Delete the node.
     $node->delete();
     // Attempt to delete the content type, which should now be allowed.
-    $this->drupalGet('admin/structure/types/manage/' . $type->name . '/delete');
+    $this->drupalGet('admin/structure/types/manage/' . $type->get('name') . '/delete');
     $this->assertRaw(
-      t('Are you sure you want to delete the content type %type?', array('%type' => $type->name)),
+      t('Are you sure you want to delete the content type %type?', array('%type' => $type->get('name'))),
       'The content type is available for deletion.'
     );
     $this->assertText(t('This action cannot be undone.'), 'The node type deletion confirmation form is available.');
