Java面向对象(包,抽象类,接口)

10 篇文章 0 订阅

Java面向对象(包,抽象类,接口)

前言:这是我在学习Java过程中的一点小结和学习方法,希望能对看到这些东西的你有一些帮助,不足之处,还有很多理解不是很深刻的地方,请指教哦!!
一:包的使用

​ 我们都知道在windows下的同一个文件夹中,我们是不可以创建多个同名的文件的,但这些同名的文件位于不同得分文件夹,就不会相互冲突了,因为它们的路径是不同的。同样的道理在Java源文件也需要类似文件夹的机制来管理可能相同的类文件。

​ 1.1 创建包

​ 在创建包命名规范,如:org.chong.javabean 使用小写字母,一般是公司域名的反写。如apache公司域名为:http://www.apache.org,所以apche公司的java产品的命名规范为 org.apache.org.xx。包名在文件目录中表示文件目录,如org.chong.javabean,在Windows文件目录表示org\chong\javabean。

比较重要的还是对抽象类和接口的理解了…

二:抽象类

知道继承后,定义一个基类,在此中定义一个抽象的方法(虚方法),即不提供具体实现方法,交由子类实现,要想把一个方法写为抽象方法,需要在方法前加上abstract关键字,且方法没有方法体,如果某类有方法是抽象方法,那么这个类必须定义为抽象类。

对于抽象类,总结出来如下:

  • 如果一个类是一个abstract类的子类,它必须具体实现父类的abstract 方法,否则子类也是抽象类。
  • 如果一个类中含有abstract方法,那么这个类必须用abstract 来修饰(抽象类也可以没有abstract方法)。
  • 一个abstract 类只关心它的子类是否具有某种功能,并不关心功能的具体行为,功能的具体行为由子类负责实现,所以抽象类可以实现类型隐藏。
  • 由于抽象类具有未实现的方法,所以不能创建对象,但可引用子类对象。
  • 不能定义一个既是final的又是abstract的类,因为这是自相矛盾的。
更直观一点来说:用代码来表示=======》

图像(Shape)类代码://基类

/************************************
 * 
 * @author chong
 * 抽象类的定义
 * 抽象类是不能实例化的
 */
public abstract class Shape {

		// 图像的名称
		public String shapeName;
		
		// 无参数的构造方法
		public Shape() {
			
		}
		
		// 有参数的构造方法
		public Shape(String shapName) {
			this.shapeName = shapName;
		}
		
		// 抽象方法
		public abstract double getArea();
		
		public void showShape() {
			System.out.println("正在操作的图形为:" + shapeName);
		}
	
}
圆形(Circle)代码:
/**************************************
 * 
 * @author chong
 *圆形
 */
public class Circle extends Shape {
	
	// 半径
	private double radius;
	private static final double PI = 3.1415926;
	
	public Circle() {
		
	}

	public Circle(String shapeName,double radius) {
		super(shapeName);
		this.radius = radius;
	}

	/************************
	 * 圆形面积
	 */
	public double getArea() {
		System.out.println("圆形面积为:" + PI * radius * radius);
		return  PI * radius * radius;
	}
	

}

长方形(Rectangle)代码:

/************************************
 * 
 * @author chong
 * 长方形类 继承 图像类
 *
 */
public class Rectangle extends Shape{

		// 宽
		private double width;
		// 长
		private double length;
		
		public Rectangle() {}
		
		public Rectangle(String shapeName,double width,double length) {
				super(shapeName);
				this.width = width;
				this.length = length;
		}
		
		
		/*************************
		 * 实现抽象类方法:求长方形面积
		 */
		public double getArea() {
			System.out.println("长方形的面积为:" + width * length);
			return width * length;
		}
	
}

三角形(Triangle)代码:

/********************************
 * 
 * @author chong 三角形类 继承 图书类
 */
public abstract class  Triangle extends Shape {

	private double border;
	private double heigth;

	public Triangle() {

	}

	public Triangle(String shapeName, double border, double heigth) {
		super(shapeName);
		this.border = border;
		this.heigth = heigth;
	}
	
	// 抽象方法未实现
	public abstract double getArea();
	
	

}

测试代码:

/*****************************
 * 
 * @author chong 图像测试
 *
 */
public class ShapeTest {

	public static void main(String[] args) {

		// 实例化图像
		// Shape shape = new Shape(); // 抽象类是不能实例化 错误代码

		Circle cirCleShap = new Circle("圆形", 10);
		testGetArea(cirCleShap);

		Rectangle r = new Rectangle("长方形", 10, 20);
		testGetArea(r);
		
		
	}

	public static void testGetArea(Shape shape) {
		System.out.println(shape.shapeName + "的面积是:" + shape.getArea());
	}

}
三:接口

与之前学过的普通类与抽象类不同,接口使用的关键字不再是class(确切地说,接口只是一个规范,不再是一个有具体功能实现的类)。定义一个接口需要使用interface关键字,接口的定义语法如下:

[public] interface 接口名[extends 父接口]
	类型 常量字段名=;
	
 	返回类型 方法名(参数列表)
}
最重要的就是接口和抽象类的区别啦!!
相同点:
​	  1、不能实例化

​	  2、抽象类只有继承后并提供抽象的具体实现,接口必须实现对应的方法  才能调用;
不同点:
1、抽象类中可能有非抽象方法,但接口只有方法的声明,没有实现

 2、接口中变量一定共有的常量,方法的定于必须为共有的,但抽象类可以定于私有属性或者方法
能够总结出来的差不多是这些,当然可能有些还是理解的不太够,得在后面学习的运用中才能够深刻理解到,所以接下来要更加努力加油。。。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值