java面向对象的特性(继承)

一.包

在了解继承之前,我们先来了解一下包的使用,包是类的逻辑组织形式,在程序中可以声明类所在的包,同一个包中的类名不能重复,通过包可以对类的访问权进行限制,此外,包是有层次结构的,即一个包可中可以包含若干个子包。

自定义包

除Java提供的用于程序开发的系统内被存放于各种系统包之外,开发人员也可以自创自定义包,如果在程序中没有声明包,类将被存放到default的包中,default的包没有名称,不建议采用default包的形式,建议开发人员按照业务的需求创建用户自定义包在程序中,声明包的语法如下:

package < 包名 >

注意:声明一个包的语句必须写在类的第一行

包的导入

如果要使用Java中存在的包,可以在程序中使用import语句导入包,在程序中导入包的格式如下:

import < 包名 >.< 类名 >

如果要导入一个包中的多个类,可以使用"*"表示包中所有的类,例如:

import java.util.*;   //导入java.util包中所有的类
import java.util.ArrayList;   //导入java.util包中的ArrayList类

包的访问权限

一个包中具有缺省访问权限的成员只能在同一个包中被引用,如果一个包中的成员的访问权限为public,那么这些成员才能被其他包的类所引用。

1.Public访问权限成员(类,属性和方法统称),Public成员可以被其他包中的类访问,Public类中的protected成员可以被由他派生的在其他包中的子句访问。
2.缺省访问权限成员,缺省访问权限成员只能被同一个包中的类访问,不能被其他的包中的类访问。
例如,如果去掉如下Tree类的clear()方法的访问修饰符public,此时Hero类中就会显示错误提示
在这里插入图片描述

继承

继承Java面向对象的三大特性之一,是实现程序代码复用的重要手段,继承是从已有的类中派生出新的类,新的类包含已有的类的数据属性和行为并能扩展新的能力,合理的使用继承可以提高代码的重要性.

继承的概述

Java的继承使用extends关键词实现,实现继承的类称为子类,被继承的类称为父类,也被称为基类,超类,父类和子类的关系是一般和特殊的关系,如水果和苹果的关系,苹果继承水果,苹果是水果的子类,和苹果是一种特殊的水果。
Java的继承语法格式如下:

[ 修饰符 ] class 子类名 [extends 父类名] {
    // 类定义部分
}

注意:子类可以继承父类中访问权限为public,protected,default的成员变量和方法

继承的实现

实践:创建一个交通工具父类(Vehicles)以及;两个子类,分别是小汽车类(Car)和卡车类(Truck),显示出各类的相关信息。
(1)创建名为交通工具的父类(Vehicles) ,该类中有两个String类型的属性,商标(brand)和颜色(color),该类中还包含一个行驶(run)的方法,该方法中输出汽车的品牌+ “正在行驶” ,并通过调用该类的showinfo()方法,在控制台显示汽车商标和颜色。通过该类的有参构造方法初始化其成员属性。
(2)创建小汽车类(Car)继承Vehicles类,在该类中增加int型成员属性座位(seats)和showCar()方法,该方法用于在控制台显示小汽车的信息。
(3)编写卡车类(Truck)继承Vehicles类,添加float型成员属性载重(load)和showTruck0)方法,该方法用于在控制台显示卡车的信息。
(4)创建测试类VehiclesTest,在该类的主方法中完成需求中相关信息的输出。
(5)创建com.java.oriented,将上述类保存至该包中。
代码如下:

package com.java.oriented;

public class Vehicles {
	 String brand;
	    String color;
	    public Vehicles(String brand,String color){
	    	this.brand=brand;
	    	this.color=color;
	    }
	 public void run() {
	    	System.out.println("我"+this.brand+"正在行驶");
	    }
	    public void showinfo() {
	    	System.out.println("品牌:"+brand+"\t"+"颜色:"+this.color);
	    }	   
}
package com.java.oriented;

public class Car extends Vehicles{

	public Car(String brand, String color) {
		super(brand, color);
		
	}
	public void showCar(int seats) {
		super.showinfo();
		System.out.println("我是一辆:"+this.brand+"\t我的颜色:"+this.color+"\t我有:"+seats+"个座位");
	}
}
package com.java.oriented;

public class Truck extends Vehicles {

	public Truck(String brand, String color) {
		super(brand, color);
		
	}
	public void showTruck(float load) {
		super.showinfo();
		System.out.println("我是一辆:"+this.brand+"\t我的颜色:"+this.color+"\t我的载重:"+load+"吨的材料");
	}

}
package com.java.oriented;

public class Vehiclestest {

	public static void main(String[] args) {
		Car c= new Car("阿斯顿马丁", "绿色");
		c.showCar(6);
		Truck t= new Truck("东风小康","蓝色");
		t.showTruck((float) 12.0);

	}

}

运行结果如下:
在这里插入图片描述

注意:子类无法继承父类私有成员,而且在实际开发中,不建议让子类继承父类的属性,因为子类继承父类的属性会打破父类的封装性,且Java继承为单继承,即一个子类只能有一个直接的父类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值