{"id":41917,"date":"2021-07-16T16:25:38","date_gmt":"2021-07-16T16:25:38","guid":{"rendered":"https:\/\/www.oracletutoring.ca\/blog\/?p=41917"},"modified":"2021-07-16T16:25:40","modified_gmt":"2021-07-16T16:25:40","slug":"comp-sci-java-a-bit-about-abstract-classes","status":"publish","type":"post","link":"https:\/\/www.oracletutoring.ca\/blog\/comp-sci-java-a-bit-about-abstract-classes\/","title":{"rendered":"Comp Sci: Java: a bit about abstract classes"},"content":{"rendered":"\n<h2>Self-tutoring about Java: the tutor mentions a couple of ideas about Java abstract classes.<\/h2>\n<p>There are numerous Java versions out there, not all of which necessarily agree on everything. Herein I&#8217;m sharing my own experience.<\/p> \n<p>\nIn Java, an abstract class is labeled &#8220;abstract&#8221; in its definition.<\/p>\n<p style=\"font-family:monospace\">\npublic abstract class Bird{\n&#8230;\n}\n<\/p>\n<p>\nYou can&#8217;t instantiate an abstract class. Rather, an abstract class is meant to be extended to one or more non-abstract ones, which can be instantiated.\n<\/p>\n<p style=\"font-family:monospace\">\npublic class SongSparrow extends Bird{\n&#8230;.\n}\n<\/p>\n\n<p>Interestingly, however, you <em>can<\/em> use an abstract class on the left side of an instantiation, with its subclass on the right side:<\/p>\n<p style=\"font-family:monospace\">\nBird b = new SongSparrow();\n<\/p>\n<p>Moreover, you can use an abstract class as a formal parameter:<\/p>\n<p style=\"font-family:monospace\">public void hearSong(Bird the_bird){\n&#8230;\n}\n<\/p>\n<p>When hearSong is called, the actual parameter will be a subclass of Bird.<\/p>\n<p>Source:<\/p>\n<p><a href=\"https:\/\/docs.oracle.com\/javase\/tutorial\/java\/IandI\/abstract.html\">docs.oracle.com<\/a><\/p>\nJack of <a href=\"https:\/\/www.oracletutoring.ca\">Oracle Tutoring by Jack and Diane,<\/a> Campbell River, BC.\n","protected":false},"excerpt":{"rendered":"<p>Self-tutoring about Java: the tutor mentions a couple of ideas about Java abstract classes. There are numerous Java versions out there, not all of which necessarily agree on everything. Herein I&#8217;m sharing my own experience. In Java, an abstract class &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"more-link\" href=\"https:\/\/www.oracletutoring.ca\/blog\/comp-sci-java-a-bit-about-abstract-classes\/\"> <span class=\"screen-reader-text\">Comp Sci: Java: a bit about abstract classes<\/span> Read More &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1801],"tags":[],"class_list":["post-41917","post","type-post","status-publish","format-standard","hentry","category-java"],"_links":{"self":[{"href":"https:\/\/www.oracletutoring.ca\/blog\/wp-json\/wp\/v2\/posts\/41917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.oracletutoring.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.oracletutoring.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.oracletutoring.ca\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.oracletutoring.ca\/blog\/wp-json\/wp\/v2\/comments?post=41917"}],"version-history":[{"count":10,"href":"https:\/\/www.oracletutoring.ca\/blog\/wp-json\/wp\/v2\/posts\/41917\/revisions"}],"predecessor-version":[{"id":41927,"href":"https:\/\/www.oracletutoring.ca\/blog\/wp-json\/wp\/v2\/posts\/41917\/revisions\/41927"}],"wp:attachment":[{"href":"https:\/\/www.oracletutoring.ca\/blog\/wp-json\/wp\/v2\/media?parent=41917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.oracletutoring.ca\/blog\/wp-json\/wp\/v2\/categories?post=41917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.oracletutoring.ca\/blog\/wp-json\/wp\/v2\/tags?post=41917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}