十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
通过继承和调用。
创新互联-专业网站定制、快速模板网站建设、高性价比桂阳网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式桂阳网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖桂阳地区。费用合理售后完善,十余年实体公司更值得信赖。
继承另一个程序的方法就可以重新该程序的方法用来测试方法。
承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类,继承就是子类继承父类的特征和行为,使得子类对象实例具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为,通过对象名.方法名进行调用,这是最普通的也是最常见的一种调用方式。通过new关键字调用构造方法,这种是在实例化对象时使用的方式。
// 乐器类
public Class Instrument {
public void play() {
// 这里可以不写代码,子类将覆盖该方法
}
}
// 钢琴类,继承于乐器类
public Class Piano extends Instrument {
// 覆盖父类的play方法
public void play() {
System.out.println("piano played");
}
}
// 小提琴类,继承于乐器类
public Class Violin extends Instrument {
// 覆盖父类的play方法
public vlid play() {
System.out.println("violin played");
}
}
// 测试类
public Class InstrumentTest {
// 弹奏方法,参数是乐器对象,传入的参数可以是乐器的任意子类
public void testPlay(Instrument inst) {
inst.play();
}
public static void main(String[] args) {
// 实例化测试类
InstrumentTest app = new InstrumentTest();
Piano piano = new Piano();
Violin violin = new Violin();
app.testPlay(piano); // 将调用Piano.play(),输出:piano played
app.testPlay(violin); // 将调用violin.play(),输出:violin played
}
}
没大听懂你的意思。。。
我猜测你是在学习继承关系吧。
你现在定义好的这个对象b可以调用Bus类中的所有方法,也就是可以点出所有东西,此时并不涉及到继承关系。
如果你这样写Transport t = new Transport("公交车", "青年", 100000);那么你就是声明了一个超类对象,此时这个对象是没有子类Bus中的方法和属性的。
如果你这样写Transport t =new Bus("公交车", "青年", 100000, 200, 355);这时候表面上你虽然声明的是超类对象,但实际上你放入的是一个子类,相当于让超类更“具体”了,此时的对象t就相当于一个Bus对象
如果你这样写Bus b = new Transport("公交车", "青年", 100000);此时编译器会报错的=-=因为你把一个超类赋给了一个子类,把大的概念赋给了一个小的概念,逻辑上也讲不通。
public class Batman{
int squares = 81;
public static void main(String[] args){
new Batman().go();
}
void go(){
incr(squares);
System.out.println(squares);
}
void incr(int squares){
squares =squares+10;
System.out.println(squares);
};
}
加个输入,如上代码,你再运行下就知道为什么了~与JAVA中变量值的生命周期有关,方法执行后,值销毁了~
虽然你a是Dog1类型的,但你声明的时候却是Animal a。所以在你a=new Dog1("bigyellow","yellow");时,a还是Animal 类型的,所以 只能调用Animal里的方法。如果你想调furColor,另外定义一个变量。