一个继承的小案例与解析

package com.wu.Vechiles;
/**
 * 定义一个名为Vehicles(交通工具)的基类,该类中应包含String类型的成员属性brand(商标)和color(颜色),
 * 还应包含成员方法run(行驶,在控制台显示“我已经开动了”)和showInfo(显示信息,在控制台显示商标和颜色),
 * 并编写构造方法初始化其成员属性。
 *
 *
 *在main方法中测试以上各类。
 * @author 代昌波
 *
 */
public class Vehicles {
    private String brand ;//定义两个属性
    private String color;
    /*
     * 无惨构造方法
     */
    public Vehicles(){
        
    }
    /**
     * 含参构造方法
     * @param brand
     * @param color
     */
    public  Vehicles(String brand, String color){
        this.brand=brand;
        this.color=color;
    }
    public void run(){
        System.out.println("我已经开动了:");
    }
    public void showInfo(){
        
        System.out.println("颜色:"+color+"商标:"+brand);
    }
}

-------------------------------------------------------------------------------------------

package com.wu.Car;

import com.wu.Vechiles.Vehicles;

/**
 * 编写Car(小汽车)类继承于Vehicles类,增加int型成员属性seats(座位),
 *还应增加成员方法showCar(在控制台显示小汽车的信息),并编写构造方法。
 * @author 代昌波
 * @version 1.0
 *
 */
public class Car extends Vehicles {
    private int seats;
    
    public Car(){
        
    }
public Car( String brand,String color,int seats){
      super(brand,color);//放在构造函数的第一句
        this.seats=seats;
        
    }
    public void showCar(){
       super.showInfo();
       
      
        System.out.println("座位:"+seats);
    }

}

-------------------------------------------------------------------------------------

package com.wu.Truck;

import com.wu.Vechiles.Vehicles;

/**
 * 编写Truck(卡车)类继承于Vehicles类,增加float型成员属性load(载重),
 * 还应增加成员方法showTruck(在控制台显示卡车的信息),并编写构造方法。
 * @author 代昌波
 *
 */
public class Truck extends Vehicles {
    private float load;
    public Truck(){
        
    }
 public Truck(String brand,String color, float load){
     super(brand,color);
        this.load=load;
    }
 public void showTruck(){
    super.showInfo();
    System.out.println("载重:"+load);
}
}

---------------------------------------------------------------------------------------

package com.wu.Text;

import com.wu.Car.Car;
import com.wu.Truck.Truck;
import com.wu.Vechiles.Vehicles;
/**
 * 在main方法中测试以上各类。
 * @author 代昌波
 *
 */
public class Test {

    public static void main(String[] args) {
         Vehicles vl=new Vehicles("白色","陆虎");
         Car car= new Car("兰博基尼","红色",5);
         Truck truck=new Truck("奔驰","蓝色",6000);
         vl.run();
         vl.showInfo();
         car.showInfo();
         car.run();
         car.showCar();
         truck.showTruck();
         truck.run();
    }

}

面向对象是java中比较重要的内容,面向对象程序设计即就是oop思想,面向对象包括三大特征即:封装,继承,多态,上述例子讲的就是继承的特性,继承提高了代码的复用性,让类与类之间产生了关系,正是有了这个关系才有了多态的特征,java语言中,java只支持单继承不支持多继承,然而这斌不是绝对的,因为在接口中可以在继承一个类的同时进行多实现,之所以不支持多继承是因为多继承容易带来安全隐患,当多个父类中定义了相同的功能,且功能不同时不确定要运行哪一个,故而无法实现多继承。但是java中支持多层继承,即C继承B,B继承A,他们只能抽取共性,在创建对象时,查阅父类功能,创建子类对象使用功能。在继承中this代表本类对象的引用,super代表父类对象的引用,如果子类中出现非私有的同名成员变量时,子类要访问本类中的变量时用this,子类要访问父类中的变量用super,简单来说super和this的使用几乎一致,需要注意一点super语句一定要定义在子类构造函数第一行。父类引用指向子类对象,当子类出现和父类一模一样的函数 且当子类对象调用该函数时,会运行子类函数的内容,如同父类的函数被覆盖一样,这就是函数的一个重要特性即重写,也称覆盖,子类覆盖父类必须保证子类权限大于等于父类权限,否则编译失败,特别注意:静态只能覆盖讲台,在这里应该区分重载和重写是不同的,重载是指一个类中可以有多个相同名字的方法,但是这些方法参数必不相同,即参数个数不同,参数类型不同,,,,,然而重写是指子父类方法要一模一样。子父类的构造函数,在子类对象进行初始化时,父类构造函数也会运行,那是因为子类的构造函数默认第一行有一条隐式的super()语句,在继承中子类一定要访问父类中的构造函数,因为父类中的数据子类可以直接获取,所以子类子啊建立对象时,需要先查看父类时如何对谢谢数据进行初始化的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值