Win a copy of 97 Things Every Java Programmer Should Know this week in the Java in General forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Paul Clapham
  • Jeanne Boyarsky
  • Junilu Lacar
  • Henry Wong
Sheriffs:
  • Ron McLeod
  • Devaka Cooray
  • Tim Cooke
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Frits Walraven
  • Tim Holloway
  • Carey Brown
Bartenders:
  • Piet Souris
  • salvin francis
  • fred rosenberger

Abstract Class

 
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Can "protected" be used in the declaration of an abstract method in an abstract class?
 
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
protected methods are possible inside abstract class

//class AbstractTest
public abstract class AbstractTest {
private void test() {
System.out.println("Inside test private");
}
protected void test1() {
System.out.println("Inside test protected");
}
void test2() {
System.out.println("Inside test default");
}
public void test3() {
System.out.println("Inside test public");
}
}

//class AbstractImpl

public class AbstractImpl extends AbstractTest {
public static void main(String[] args) {
AbstractImpl ob = new AbstractImpl();
// ob.test();//not possible to instansiate abstract classes
ob.test1();
ob.test2();
ob.test3();
}
}
 
Greenhorn
Posts: 12
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
For an abstract method, only public or protected modifiers can be set.
If this abstract class is extended by another class of different package then that class should able to access this abstract method to override.

Only public, protected members can be visible to all its subclasses in any packages.

We can also leave a abstract method declaration with default access.
But the problem arises when it is extended by a class of other package.
In that case, that second class cannot implement this abstract method as the method is not visible to other packages. The only solution to this make the second class type abstract as below.

package com.nanna.abs.one;

public abstract class AbstTest {

abstract void test();

}

package com.nanna.abs.two;

import com.nanna.abs.one.AbstTest;

public abstract class TestOnAbstract extends AbstTest{


public void test2(){


}

}


We can conclude that chain of subclasses of AbstTest cannot be instantiated as they must declare abstract.
 
Is this the real life? Is this just fantasy? Is this a tiny ad?
Devious Experiments for a Truly Passive Greenhouse!
https://www.kickstarter.com/projects/paulwheaton/greenhouse-1
    Bookmark Topic Watch Topic
  • New Topic