class Car{
private String name;
public Car() {
setName("car");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Bike extends Car{
public String id;
String name="Bike";
Bike(){
}
public String getName(){
return name;
}
void show(){
System.out.println("sub");
}
}
public class Main {
public static void main(String[] args) {
Car car=new Bike();
System.out.println(car.getName()); //getName方法在继承时,被修改 "覆盖"
//System.out.println(car.show()); //error 向上转型show方法不能使用,"丢失"
}
}
class Car{
private String name;
public Car() {
setName("car");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Bike extends Car{
public String id;
String name="Bike";
Bike(){
}
void show(){
System.out.println("sub");
}
}
public class Main {
public static void main(String[] args) {
Car car=new Bike(); //向上转型
System.out.println(car.getName());
/*基类和派生类拥有不同的域
* car.getName()调用基类name,即super.name
* 若在派生类写入getName方法
* 则调用this.name
* */
//System.out.println(car.show()); //error 向上转型show方法不能使用,"丢失"
}
}
//out: car
class Car{
private String name;
public Car() {
setName("car");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Bike extends Car{
public String id;
String name="Bike";
Bike(){
}
void show(){
System.out.println("sub");
}
}
public class Main {
public static void main(String[] args) {
Bike bike=(Bike) new Car();
//向下转型,需要强制类型转换
//因为父类不知道,要转成哪一个子类
//需要显式指定
System.out.println(bike.getName());
}
}