java基础概念整理(三)
1、对象的上转型
对象的上转型不能调用和使用子类对象新增的成员和变量,不能调用子类新增的方法。
上转型对象可以访问子类继承或者隐藏的成员变量,也可以调用子类继承或者子类重写的实例方法。因此如果子类重写了父类的某个实例方法后,当对象的上转型对象调用这个实例方法时一定是调用了子类重新写的实例方法。
2、抽象方法
对于abstract方法,只允许声明,不允许实现,不允许使用final和abstract同时修饰一个方法或者一个类,abstract方法只能是实例方法,abstract类中可以有abstract方法。非abstract类中不可以有abstract方法。
3、面向对象编程,经常会使用到abstract类,abstract类只关心操作,不关系这些操作的具体实现的细节问题,
package com.Example1;
public class Exmaple5_12 {
public static void main(String[] args) {
// TODO Auto-generated method stub
MobileTelephone telephone = new MobileTelephone();
SIM sim = new SIMofChinaMobile();
sim.setNumber("2454545");
telephone.userSIM(sim);
telephone.showMessage();
sim = new SIMofChinaUnicon();
sim.setNumber("454664646");
telephone.userSIM(sim);
telephone.showMessage();
}
}
abstract class SIM {
public abstract void setNumber(String n);
public abstract String giveNumber();
public abstract String giveCorpName();
}
class MobileTelephone {
SIM card;
public void userSIM(SIM card) {
this.card = card;
}
public void showMessage() {
System.out.println("use card name is" + card.giveCorpName());
System.out.println("SIm'number is" + card.giveNumber());
}
}
class SIMofChinaMobile extends SIM {
String number;
@Override
public void setNumber(String n) {
// TODO Auto-generated method stub
number = n;
}
@Override
public String giveNumber() {
// TODO Auto-generated method stub
return number;
}
@Override
public String giveCorpName() {
// TODO Auto-generated method stub
return "联通卡";
}
}
class SIMofChinaUnicon extends SIM {
String number;
@Override
public void setNumber(String n) {
// TODO Auto-generated method stub
number = n;
}
@Override
public String giveNumber() {
// TODO Auto-generated method stub
return number;
}
@Override
public String giveCorpName() {
// TODO Auto-generated method stub
return "中国移动";
}
}
4、继承是一种已有的类创建新的类的机制,利用继承,可以创建一个共有的属性的一般类,根据一般类创建据用特殊属性的新类。