• 0

[JAVA] Abstract Class Concept


Question

A teacher gave me this lecture with some questions, and I am somewhat confused.

Say we have a hierarchy like:

Object

|

+---A

|

+---B

|

+---C

and we made these methods in Class A:

public abstract void method1();

public abstract void method2(int i);

so... these questions were presented to us:

(a) If class B does not override any of the two methods above, can class B be compiled cleanly? If so, can an object be created from class B? If not, explain why not.

(b) Now assume that class B overrides method1 given above. Can class B be compiled cleanly? If so, can an object be created from class B? If not, explain why not.

© Now assume that class C overrides method2 given above (with the assumption that B overrides method1, as discussed in part(b)). Can class C be compiled cleanly? If so, can an object be created from class C? If not, explain why not.

(d) In defining class A described above, must the abstract modifier be used in the 1st line of the class definition (or is it optional given that it has abstract method(s) in it)?

(e) In defining method1 and method2 described above, must the abstract modifier be used in the method statement (or is it optional given that it has no method body)?

Ok, so if a subclass, which would be B, doesn't override the abstract methods, it becomes an abstract class, correct? But I'm not really sure if it can create an object or not, I don't believe it can, but can someone at least elaborate on this.

Any help would be appreciated.

Link to comment
https://www.neowin.net/forum/topic/233031-java-abstract-class-concept/
Share on other sites

7 answers to this question

Recommended Posts

  • 0

same as he said.

"Abstract" tell classes that inherit from it they it must implement these abstract methods.

Abstract class and methods can not be created as they have no implementation. They are classes designed to be inherited by a subclass

eg.

class Shape 
{
   abstract void drawMe()
  {
     //sub classes should implement this
     //no code here
  }
}

class Triangle extends Shape
{
   void drawMe()
  {
    // draw a triangle here
    //put your code here
   }
}

class Square extends Shape
{
   void drawMe()
  {
    // draw a square here
    // put your code here
   }
}

so now as long as we know the object is instanceof object we can call the draw method

somefunction(Shape x)
{
   //since we call drawMe() cause we know all subclasses of shape implement this method
   x.drawMe();
}

someFunction2(Object x)
{

  // we can cast if object is instance of shape and call drawMe() method
  if (x instanceof Shape)
    (x(Shape)).drawMe();
}

main
{
   Triangle t = new Triangle();
   Square s = new Square();


   //we can now call these functions with these objects
   somefunction(t);
   somefunction(s);
   
   somefunction2(t);
   somefunction2(s);
}

  • 0

(a) If class B does not override any of the two methods above, can class B be compiled cleanly? If so, can an object be created from class B? If not, explain why not.

(b) Now assume that class B overrides method1 given above. Can class B be compiled cleanly? If so, can an object be created from class B? If not, explain why not.

? Now assume that class C overrides method2 given above (with the assumption that B overrides method1, as discussed in part(b)). Can class C be compiled cleanly? If so, can an object be created from class C? If not, explain why not.

(d) In defining class A described above, must the abstract modifier be used in the 1st line of the class definition (or is it optional given that it has abstract method(s) in it)?

(e) In defining method1 and method2 described above, must the abstract modifier be used in the method statement (or is it optional given that it has no method body)?

Answers

a) No, it cannot it must provide implementation for both methods, so it MUST override the two methods

b) It still cannot be, because the implementation for the other abstract method isn't overriden.

c) Yes, class C can be compiled, because Class B overrides one method and essentially it's inherited that abstract method as well, and Class C inherited the overriden method and and also provides an implementation for that other method.

d) No, it doesn't have to be used, providing there is at least one or more abstract methods, that class becomes an abstract class as opposed to an concrete class

e) No, it must be declared abstract to force the sub-class to override the method, otherwise it's a simple method that has emtpy implementation and when invoked will do nothing.

  • 0
a) No, it cannot it must provide implementation for both methods, so it MUST override the two methods

I don't think this is right. You can have a chain of abstract classes, but you cannot create an object of an abstract class. Once all abstract methods have been overridden, you can create objects.

  • 0

Actually, all I wanted was some explanation of abstract classes, but I got some of it before you guys answered the questions, but thanks for the input, I really feel like I understand abstract classes better than the lecture and notes that were given.

  • 0
I don't think this is right. You can have a chain of abstract classes, but you cannot  create an object of an abstract class. Once all abstract methods have been overridden, you can create objects.

584774123[/snapback]

Well yeah exactly, the question asked if B only overrided one of the abstract methods can B still be instantiated, it won't allow it, because it inherits the abstract class and is thus obliged to implement all abstract methods, or else it will whinge.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • I bought one of these last year. I really hope I won't have to deal with this crap. My drive is in good condition at the moment.
    • Umm, read my answer again! If you have something to add or contribute, feel free. Otherwise my point was that you apparently dont want faster updates... so you want slower updates by process of elimination. If you have something to contribute, meaningful answers are better.
    • These features described above are good, but far from what developers will like the most. The main feature that developers will care and love the most it's called "Bring Your Own Models". It gives us the ability to connect to LOCAL AI models running on Ollama. The feature it's located on GitHub Copilot tab -> On the model picker where you can select "manage models" instead of paid models and then it will show you the "Bring your own models" window where you can now select Ollama and the endpoint of your local server. So if you have a beefy spec machine you can now use your own model 100% local inside Visual Studio 2026 18.7.0
    • Microsoft Teams is getting a controversial location tracking feature that users may hate by Usama Jawad Image generated with Microsoft Copilot Earlier this year, Microsoft planned to roll out a controversial location tracking feature in Teams, but following customer feedback, it decided to delay its release. The bad news is that the company has decided to launch it later this year, but it's based on roughly the same design that was shared earlier, which means that many users still have good reason to worry. Basically, Microsoft Places and Teams have received workplace check-ins via Wi-Fi. The idea is that if an employee arrives at the office and connects to their enterprise network, their profile status indicator will show them as being present in the office. For example, if you arrive at work, open Teams on your PC, and connect to the "Studio B" company Wi-Fi network, your Teams profile will indicate that you are present in "Studio B", as shown below: Microsoft says that this feature is basically a replacement for physical workplace check-in peripherals, it reduces the need to manually update your status, and it also enables co-workers to know that you're at work so that they can coordinate in-person meetings with you. IT admins can enable this workplace check-in capability at a tenant level, and users have the ability to control whether they want to enable it or not. Of course, all of that sounds great on paper, but naturally, many Teams customers may still have concerns, as they did before. This is because it enables your reporting manager and other members of the organization to track if you are at the office, when you arrive at the office, and where you are right now. This could be problematic for people who work in what they consider to be flexible work environments or hybrid setups, and this kind of location tracking could be considered an invasion of privacy. Microsoft has tried to alleviate some of these concerns by letting users know that they can manually set their location easily, which essentially overrides workplace check-in if they feel uncomfortable with it. However, that doesn't really solve the problem because your organization could enforce a workplace policy that mandates that this feature remains enabled. The Redmond tech giant has also assured users that this capability does not store historical data and is only a real-time indicator of location. Finally, it only generates a signal when you connect to a corporate network, which means that if you are working from home and connect your PC to your personal Wi-Fi, it won't broadcast your location to your employer; you will simply be shown as "Remote". Microsoft has encouraged IT admins to prepare for this change and begin informing users so they know what to expect once it begins rolling out later this year.
  • Recent Achievements

    • Very Popular
      AndrewSteel earned a badge
      Very Popular
    • Veteran
      Taliseian went up a rank
      Veteran
    • One Month Later
      Clizby earned a badge
      One Month Later
    • One Month Later
      Timaximus earned a badge
      One Month Later
    • Week One Done
      Timaximus earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      516
    2. 2
      +Edouard
      162
    3. 3
      PsYcHoKiLLa
      157
    4. 4
      Steven P.
      82
    5. 5
      ATLien_0
      81
  • Tell a friend

    Love Neowin? Tell a friend!