Разница между созданием объекта подкласса в SuperClass Vs Subclass - PullRequest
0 голосов
/ 13 октября 2018

В чем разница между созданием объекта подкласса в подклассе и суперклассе?

Мой суперкласс -> LibraryItem.Java

Мой подкласс -> Book.java

В чем разница между 1 и 2

         1. LibraryItem book_01 = new Book() //In superclass
         2. book_01 = new Book() //In subclass

Примечание: - обратите внимание, я удалил некоторые методы get, set и некоторые абстрактные.здесь были добавлены только важные части

 public abstract class LibraryItem {  
    private boolean status;
    private String borrowedDateTime;
    private Reader reader;
    private int isbn;
    private String title;
    private String publicationDate;
    private String sector;

    public abstract void getItemDetails();
    public abstract void returnItem();
    public abstract void readerDetails();
    public abstract void borrowItem();

    public static void main (String [] args){

    }

}


public class Book extends LibraryItem {
public String author;
    public String publisher;
    public int no_Of_Pages;
    private int readerID;

    Book[] bookArray = new Book[100];

    Book(int isbn, String title, String sector, String publicationDate,
         boolean status, String borrowedDateTime, String author, String publisher, int no_Of_Pages, int readerId){
        super();
        this.setIsbn(isbn);
        this.setTitle(title);
        this.setSector(sector);
        this.setPublicationDate(publicationDate);
        this.setStatus(status);
        this.setBorrowedDateTime(borrowedDateTime);
        this.author = author;
        this.publisher = publisher;
        this.no_Of_Pages = no_Of_Pages;
        this.setReaderID(readerId);

    }





    //Create 100 Books

    public void createBooks(){
        Book book_01;
        book_01 = new Book(00001, "Harry Potter", "Adveture", "2012.12.12",
                true, "asd","J.K Rowling", "Disney", 500, 0);
        bookArray [0] = book_01;

    }

}

1 Ответ

0 голосов
/ 13 октября 2018

Кажется немного странным, но

В JAVA:

Нестатические методы зависят от типа объекта (тип привязки времени выполнения) объекта, а не от ссылки, на которую указывает.

В вашем случае, время book_01 указывает на объект класса Book в куче

Плюсы использования ссылки на суперкласс: 1.Pros is One может дать любой адрес объекта подкласса для суперкласса, полезно в случаесвязывания во время выполнения, если мы не знаем точный тип объекта

2.Cons использует объект суперкласса, ссылаясь на объект подкласса, мы не можем вызывать методы и атрибуты подкласса.

Плюсы и минусыиспользуя ссылку на подкласс:

1.Pros - объект может иметь доступ к атрибутам и методам суперкласса, а также к его тоже.

2.Cons - объект не может служить ссылкой на другой класс, если толькоили пока они не являются подклассами этого класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...