Default methods in interface - modifier order [duplicate] - java

This question already has answers here:
Java modifiers syntax and format
(5 answers)
Closed 8 years ago.
I wonder what order is better in following examples:
Example 1
public interface Foo {
public default int bar() {
return 1;
}
}
Example 2
public interface Foo {
default public int bar() {
return 1;
}
}

Considering public is implicit = optional, your problem is virtually non-existent
public interface Foo {
default int bar() {
return 1;
}
}
Of course you can add it, but it doesn't have any effect.

Related

Using of methods instead of constructor [duplicate]

This question already has answers here:
Purpose of a constructor in Java?
(12 answers)
Closed 2 years ago.
When we can use methods instead of constructor for any operation then what is the use of constructor in java or c++.
//Program of Division using constructor:-
class Hey {
Hey() {
int i = 10;
System.out.println("Division of 10/2 is " + i/2);
}
}
public class HelloWorld extends Hey {
public static void main ( String[] args ) {
Hey ob = new Hey();
}
}
//Program of division using method:-
class Hey {
public void disp() {
int i = 10;
System.out.println("Division of 10/2 is " + i/2);
}
}
public class HelloWorld extends Hey {
public static void main( String[] args ) {
Hey ob = new Hey();
ob.disp();
}
}
As, we can see that both will have same output. So, now I am bit confuse that when to use constructor.
Constructor is used to initialize objects in java. Even if you don't provide constructor in your code, java compiler will automatically add a default constructor.
Whereas Methods are used to exhibits functionalities to object. You will have to invoke methods explicitly in your code.
In the example you shared, you are creating object of Hey class Hey ob=new Hey() in order to call its method disp. So if you want to define object in your class, you will use constructors, and if you want to write some functionality of object, you can use Methods.

How can we create an instance for Supplier as it is an Interface? [duplicate]

This question already has answers here:
How are Anonymous inner classes used in Java?
(18 answers)
Closed 3 years ago.
I am trying to understand Supplier interface. I understand that it can return an object if we invoke its get() method. However, in the following example:
public class SupplierExample {
public static void main(String[] args) {
Supplier<String> s = new Supplier<String>() {
public String get() {
return "test";
}
};
System.out.println(s.get());
}
}
I am not able to understand how we can instantiate an object (s in above exaple) from an interface. Please advise.
This snippet contains an anonymous class instance, which implements the Supplier<String> interface.
It implements the only method of that interface with:
public String get() {
return "test";
}
which returns the String "test".
Therefore, s.get() returns the String "test".

Static / Compile-time Polymorphism [duplicate]

This question already has answers here:
What is the difference between dynamic and static polymorphism in Java?
(14 answers)
Closed 3 years ago.
Why method overloading called as static or compile-time polymorphism
sample in Java.
class StaticPolymorphismSample {
void polymorphicMethod(int a) {
}
void polymorphicMethod(int a, int b) {
}
void polymorphicMethod(String a) {
}
void nonPolymorphicMethod(int a) {
}
void nonPolymorphicMethod1(int a) {
}
}
so my question is.
Why we say that method overloading ( in this case polymorphicMethod methods ) are static polymorphism , but another methods( nonPolymorphicMethod(int a) nonPolymorphicMethod1(int a) ) are not polymorphism.
technically I cannot see different between method with same name and different parameters and method with different,
all answers in here and topics in google is not applicable for my question.
For nonPolymorphicMethod1(int a) the reason this wouldn't be considered polymorphic is because it has a different name from the other nonPolymorphicMethods.
For nonPolymorphicMethod( int a, int b ) and nonPolymorphicMethod( int a ) these aren't considered polymorphic as they don't take the same parameters. Edit This is Wrong See Next Line
The other methods you've shown are polymorphic due to their sharing of a name, but differing parameter types or number of parameters.
A better example of polymorphism in methods would be :
public abstract class ClassA
{
public Object getObject()
{
return new Object();
}
}
public class ClassB extends ClassA
{
#Override
public ClassB getObject()
{
return new ClassB();
}
}
public class ClassC extends ClassA
{
#Override
public ClassC getObject()
{
ClassC example = new ClassC();
example.doStuff();
return example;
}
private void doStuff()
{
// Do Something To Change The Object
}
}

Why does java prefer the parent class in this example? [duplicate]

This question already has answers here:
A superclass method is called instead of the subclass method
(3 answers)
Java inheritance (method overriding and overloading)
(4 answers)
Inheritance and Overloading methods with different argument data types in Java
(2 answers)
Closed 4 years ago.
So in class, we are going over-loading and over-ridding though for some reason my professor could not explain why when we have two classes (a and b; as well as b extends to a) when calling a method it prefers the method in the parent class even though the parameters meet those of the child class. Yet java uses the parent one.
class B extends A {
public int m(int x) {
return 20;
}
}
class A {
public int m(double x) {
return 10;
}
}
public class Tester {
public static void main(String[] args) {
A x = new B();
System.out.println(x.m(5));
}
}
Output: 10

Why do we use this code in JAVA? [duplicate]

This question already has answers here:
"Program to an interface". What does it mean? [duplicate]
(8 answers)
Closed 6 years ago.
I am now studying JAVA.
When we make interface like this, sometimes we create object like this
Sample code :-
interface test01{
public boolean A(int i);
public int B(int a);
public String C (String c);
}
class ttt implements test01{
public boolean A(int a){
return true;
}
public int B(int a){
return a;
}
public String C(String c){
return c;
}
}
public class Interface_test {
public static void main(String[] args) {
ttt t1 = new ttt();
System.out.println(t1.A(1));
System.out.println(t1.B(1));
System.out.println(t1.C("C"));
test01 tt = new ttt();
System.out.println(tt.A(1));
System.out.println(tt.B(1));
System.out.println(tt.C("C"));
}
}
This code's result is same
but I was wondering why we use the pattern like this
"test01 tt = new ttt();"
instead of
"ttt t1 = new ttt();"
Please let me know...
Thank you!
Interfaces are used as types to allow implementations to be swapped in the future without having to worry about changing method signatures or implementations in other classes that are using your interface.
If you didn't use an interface, you had to revisit all classes using your old implementation and change it to use the new implementation.
Interfaces are also used as an abstraction to hide logic of the implementing class from users of the interface.

Categories