public class a {
protected virtual int mult(int x)
{
return x*x ;
}
}
public class b : a
{
protected override int mult(int x) { return x*x*x ; }
}
internal class Program { static void Main(string[] args) {
b jack = new b();
int v = jack.mult(5); // error
// so how can i access to mult() in main class without change access modifier to public ??????
} }
How to access to a function whose access modifier is protected and exists in a class that inherits from another class in c#?
CodePudding user response:
Note that the mult
function is declared as protected
in both class a
and class b
, which means that it can only be accessed by code within the class or its derived classes. Since b
is a derived class of a
, the mult
function is accessible to code within b
.
If you want to access the mult
function from a class other than b
or a
subclass of b
, you will need to change the access modifier to the public
or provide a public method in b
or a
subclass of b
that calls the mult
function.
In this case you are doing all this in the Main
method which is in other class than a
or b
.