Can you use abstract and final both with a method? Why?

Asked by Last Modified  

34 Answers

Learn Java

Follow 3
Answer

Please enter your answer

Trainer

No because we have to provide an abstract method with implementation in the subclass (the child class of the parent class in which the abstract method was declared). And for providing this implementation the abstract method has to be overridden in the child class. Since final methods cannot be overridden...
read more
No because we have to provide an abstract method with implementation in the subclass (the child class of the parent class in which the abstract method was declared). And for providing this implementation the abstract method has to be overridden in the child class. Since final methods cannot be overridden so we can't declare a method both abstract and final as by doing so you won't be able to implement the method in the child class as it was declared both final and abstract in the parent class. read less
Comments

Experienced Java Professional

No, we can not declare abstract method as final. We have to proved implementation to abstract methods in subclasses. and method declared as final mean don't override (or redefine) this method. So the abstract and final combination is contradicting with each other.
Comments

Short Answer: No. Long Answer: Let's take a closer look at both keywords separately and try to understand their purpose before understanding the Why part of the question. An abstract method is a common behavior for which, each subclass will provide its own concrete implementation (or Override the abstract...
read more
Short Answer: No. Long Answer: Let's take a closer look at both keywords separately and try to understand their purpose before understanding the Why part of the question. An abstract method is a common behavior for which, each subclass will provide its own concrete implementation (or Override the abstract method). For example, consider an abstract class called Shape having an abstract method called getArea(). The abstract method doesn't know exactly how the area of the underlying shape will be calculated. But it just knows that each subclass of Shape needs to have a getArea() method. The concrete classes will decide how to compute the area. That is, the getArea() method inside Circle class will return area based on radius; while Rectangle class will return area based on length and breath. Similarly, other sub-classes will have their own concrete implementations. Now , coming to final keyword. If a method is declared as final, then it implies that this is the final implementation of this method and its behavior should not be modified at runtime by any subclass. If a method is declared as final, it cannot be Overriden by any subclass. For example, consider the abstract class House with methods getWindowCount() and getDoorCount(). Now, irrespective of the type of house (i.e. villa, appartment, bunglow, etc.), the concrete implementation of the above mentioned methods is not going to change. Hence, we can declare these methods as final and provide a concrete implementation in the House class itself. Since, you don't want someone to accidentally change the behavior of counting the number of windows and doors in the house based on its type. Conclusion: There are separate design considerations while choosing between the keywords abstract and final. When used on a method, they have completely opposite purposes. And since, there purpose are so opposite to each other (abstract methods mean provide implementation in sub-classes; while final methods mean DO NOT provide implementation in sub-classes), hence, it doesn't make sense to use them together on a single method. This is the reason, why Java compiler doesn't allow the usage of abstract and final keywords on a method. It throws a compile time error "illegal combination of modifiers: abstract and final". read less
Comments

10 years of Hadoop Spark Expertise

We should not write, because abstract meaning is partially implemented, so some one has to implement that, if we create that as final then we cant change that further.
Comments

More than 12 years of experience in IT Industry including Science/Computer teaching

No, Abstract method cannot be declared as final. This is because, abstract method has to be overridden to provide implementation. If it is declared as final, it cannot be overridden.
Comments

Java Trainer

No, Abstract is meant to be overridden in subclass so it wont have method body and final means it cannot be overridden in subclass and method body needs to be provided.
Comments

IT Professional Trainer with 13 years of experience in IT industry + Academics

Nope..... Because abstract methods are needed to be defined in the subclass..So you can't have abstract final method because then after you can not define it
Comments

Trainer

No, because we have to provide the implementation to methods in subclasses.
Comments

Experienced Software Professional

No. This is so because an abstract method is there for implementation. Putting a final is illegal. A Final method needs to have a body or implementation. Final restricts further overriding of the method in any derived class.
Comments

Computer Classes

No, we can not declare abstract method as final. We have to proved implementation to abstract methods in subclasses.
Comments

View 32 more Answers

Related Questions

When to use transient variables?
To know about transient , first we need to know about serialization concept .serialization makes an object's state persistent . It means that the object is converted into stream and store in a file . For...
Profile Photo
Jay
Is JAVA training only for technical students or a non-technical student also may join?
Any Body can Learn Programming Language.It All depends upon the learning of basics and all.Basics actually makes the thing different.
Profile Photo
Vikrant
0 0
View Comments6
What happens if an exception occurs in catch block?
That error message will get printed.
Profile Photo
Janardan
Can you tell me some new features in JavaFX 2.0?
JavaFX is a software platform for creating and delivering desktop applications, as well as rich internet applications (RIAs) that can run across a wide variety of devices. JavaFX is intended to replace...
Profile Photo
Renuka
0 0
View Comments5

Now ask question in any of the 1000+ Categories, and get Answers from Tutors and Trainers on UrbanPro.com

Ask a Question

Related Lessons

How to create Rest web services in Java
Web services are web application components that lets two different applications to communicate over the network.Let if an application which in written java provides web services can be communicated through...
Profile Photo

Java8 Filters and collectors
Lets say we have collection of strings and we would like to filter (remove) out certain strings from collection. We could achive the same in java 7 and earlier versions import java.util.ArrayList; import...
Profile Photo

Overview on Auto IT and use in selenium webdriver
AutoIt v3 is a freeware BASIC-like scripting languages designed for automating the windows GUI and general scripting. It used a combination of simulated keystrokes, mouse movements and window/control manipulation...
Profile Photo

Java inheritance example
Answer these questions Answer the above question
Profile Photo

Finding a Majority Element
Problem Description Task. The goal in this code problem is to check whether an input sequence contains a majority element. Input Format. The first line contains an integer, the next one contains a sequence...
Profile Photo

Recommended Articles

Designed in a flexible and user-friendly demeanor, Java is the most commonly used programming language for the creation of web applications and platform. It allows developers to “write once, run anywhere” (WORA). It is general-purpose, a high-level programming language developed by Sun Microsystem. Initially known as an...

Read full article >

Before we start on the importance of learning JavaScript, let’s start with a short introduction on the topic. JavaScript is the most popular programming language in the world, precisely it is the language - for Computers, the Web, Servers, Smart Phone, Laptops, Mobiles, Tablets and more. And if you are a beginner or planning...

Read full article >

Java is the most commonly used popular programming language for the creation of web applications and platform today. Integrated Cloud Applications and Platform Services Oracle says, “Java developers worldwide has over 9 million and runs approximately 3 billion mobile phones”.  Right from its first implication as java 1.0...

Read full article >

Java is the most famous programming language till date. 20 years is a big time for any programming language to survive and gain strength. Java has been proved to be one of the most reliable programming languages for networked computers. source:techcentral.com Java was developed to pertain over the Internet. Over...

Read full article >

Looking for Java Training Classes?

Learn from the Best Tutors on UrbanPro

Are you a Tutor or Training Institute?

Join UrbanPro Today to find students near you