写个笔记
public class TTT
{
private String name ="aaa";
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
public class TTT2 extends TTT
{
private String name="bbb";
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public static void main(String[] args)
{
TTT ttt = new TTT();
TTT2 ttt2 = new TTT2();
System.out.println(ttt.getName()); //aa
System.out.println(ttt2.getName()); //bb
// ttt = ttt2;
//TTT cannot be cast to TTT2不能强转换。 如果实现了ttt = ttt2 就可以转换
ttt2 = (TTT2)ttt;
System.out.println(ttt.getName()); //bb
System.out.println(ttt2.getName()); //bb
}
}
Father f1 = newSon(); // 这就叫upcasting (向上转型)
// 现在f1引用指向一个Son对象
Son s1 =(Son)f1; // 这就叫downcasting (向下转型)
// 现在f1还是指向Son对象
package com.tracy.interview;
public class Father {
public void getAge()
{
System.out.println("Father'age");
}
}
package com.tracy.interview;
public class Son extends Father {
public void getName()
{
System.out.println("hello world");
System.out.println(super.getClass().getName());
}
public void getAge()
{
System.out.println("son'age");
}
public static void main(String[] args) {
Son son = new Son();
son.getName();
Father fa =new Son();
// fa.getName(); //父类没getName()方法不能调用,相当于还是父类
fa.getAge(); //如果子类有重写的话,就调用子类的方法。没有的话,就调用父类的方法
System.out.println(fa.getClass());
}
}
<pre name="code" class="java">hello world
com.tracy.interview.Son
son'age
class com.tracy.interview.Son