Answer & Solution
We can't store super class object in subclass reference But we can store subclass object in super class reference.
class One{
final int a = 15;
}
class Two extends One{
final int a = 20;
}
public class Test extends Two{
final int a = 30;
public static void main(String args[]){
Test t = new One();
System.out.print(t.a);
}
}
class A{
int i = 10;
public void printValue(){
System.out.print("Value-A");
}
}
class B extends A{
int i = 12;
public void printValue(){
System.out.print("Value-B");
}
}
public class Test{
public static void main(String args[]){
A a = new B();
a.printValue();
System.out.print(a.i);
}
}
class SuperClass{
public int doIt(String str, Integer... data)throws Exception{
String signature = "(String, Integer[])";
System.out.println(str + " " + signature);
return 1;
}
}
public class Test extends SuperClass{
public int doIt(String str, Integer... data){
String signature = "(String, Integer[])";
System.out.println("Overridden: " + str + " " +signature);
return 0;
}
public static void main(String... args){
SuperClass sb = new Test();
sb.doIt("hello", 3);
}
}
class A{
A(String s){}
A(){}
}
class B extends A{
B(){}
B(String s){
super(s);
}
void test(){
// insert code here
}
}
class A{
public void printValue(){
System.out.println("Value-A");
}
}
class B extends A{
public void printNameB(){
System.out.println("Name-B");
}
}
class C extends A{
public void printNameC(){
System.out.println("Name-C");
}
}
public class Test{
public static void main (String[] args){
B b = new B();
C c = new C();
newPrint(b);
newPrint(c);
}
public static void newPrint(A a){
a.printValue();
}
}
class A{
public void printName(){
System.out.println("Name-A");
}
}
class B extends A{
public void printName(){
System.out.println("Name-B");
}
}
class C extends A{
public void printName(){
System.out.println("Name-C");
}
}
public class Test{
public static void main (String[] args){
B b = new B();
C c = new C();
b = c;
newPrint(b);
}
public static void newPrint(A a){
a.printName();
}
}
class A{
private void printName(){
System.out.println("Value-A");
}
}
class B extends A{
public void printName(){
System.out.println("Name-B");
}
}
public class Test{
public static void main (String[] args){
B b = new B();
b.printName();
}
}
class A{
int b=10;
private A(){
this.b=7;
}
int f(){
return b;
}
}
class B extends A{
int b;
}
public class Test{
public static void main(String[] args){
A a = new B();
System.out.println(a.f());
}
}
class Vehicle{
public void printSound(){
System.out.print("vehicle");
}
}
class Car extends Vehicle{
public void printSound(){
System.out.print("car");
}
}
class Bike extends Vehicle{
public void printSound(){
System.out.print("bike");
}
}
public class Test{
public static void main(String[] args){
Vehicle v = new Car();
Bike b = (Bike) v;
v.printSound();
b.printSound();
}
}
class Small{
public Small(){
System.out.print("a ");
}
}
class Small2 extends Small{
public Small2(){
System.out.print("b ");
}
}
class Small3 extends Small2{
public Small3(){
System.out.print("c ");
}
}
public class Test{
public static void main(String args[]){
new Small3();
}
}