Comments (1)
Static Binding
Static binding means the compiler chooses the method based on the compile-time type.
class A {
static void print() {
System.out.println("This is superclass.");
}
static void print(String s) {
System.out.println("This is superclass." + s);
}
}
class B extends A {
static void print() {
System.out.print("This is subclass.");
}
static void print(int x) {
System.out.println("This is subclass." + x);
}
}
Let's say you run the above in jshell, this is the output:
jshell> A b = new B();
b ==> B@7cd62f43
jshell> b.print()
This is superclass.
jshell> b.print(1);
| Error:
| incompatible types: int cannot be converted to java.lang.String
| b.print(1);
| ^
jshell> b.print("Hello")
This is superclass.Hello
jshell> B b = new B()
b ==> B@53b32d7
jshell> b.print()
This is subclass.
jshell> b.print(1)
This is subclass.1
jshell> b.print("Hello");
This is superclass.Hello
As you can see when we have the variable b of type A, b.print() invokes the method in the superclass cos b is determined by the compiler at compile time to be of type A. It will "start" looking for the method in superclass A. I guess this is static binding.
Dynamic binding
Dynamic is just the compiler choosing which method to invoke based on the run time type of the target. I guess it will start looking for a matching method signature in the subclass first then work its way up.
I removed the static modifier:
jshell> b.print()
This is subclass.
Sorry for the various update. I think I was quite confused too. Maybe this might not be the best example. Hopefully prof can clarify.
from 2122-s2.
Related Issues (20)
- PYP Q 2d HOT 2
- PYP last qn HOT 7
- Recitation 09-extra pdf not on luminus HOT 2
- PECS HOT 5
- QN5 17/18S1 [Why is A not the answer?] HOT 4
- Q5 HOT 3
- Can anyone explain what is a functor and a monad isπ HOT 8
- Mock Q4b HOT 9
- Impending P.A.N.I.C HOT 22
- AY19/20 SS1 qn 7 HOT 4
- Question on reduce function HOT 4
- AY18/19 Q2 Cyclical Dependency HOT 3
- error in obtaining int[] from a stream HOT 4
- Q3d) When I solved the game of Life problem for labs, I used loops. Can someone post their code using streams for 3d and 3e ? HOT 2
- Assertion questions HOT 2
- Mock 4a help HOT 13
- What kind of stream operations allow us to use .parallel() operation? HOT 4
- Final Submission Folder Disappeared HOT 6
- Anyone solved the RedLight , GreenLight, AmberLight problem? Can you please post your code? HOT 2
- excercise 2 inheritence question
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from 2122-s2.