您的位置:首页 > 编程语言 > Java开发

java学习(6) java8 抽象类

2017-07-21 17:07 369 查看
最近学习过程中遇到了抽象类,和其紧密联系的还有抽象方法。

我们正常定义一个类是可以被实例化的,也就是用new关键字调用类的构造器来产生其实例。 但是抽象类是不能被实例化的,无法用new来产生实例。

抽象类可以包含成员变量、方法、构造器、初始化模块、内部类这些成分。但抽象类的构造器不能用于创建实例,主要用于被子类调用。

抽象类不能创建实例,只能当成父类被继承

定义抽象方法只需在普通方法上增加abstract修饰符,并把普通法的方法体全部去掉,并在方法后增加分号即可。

定义抽象类只要在普通类上增加abstract 修饰符即可,甚至一个普通类(没有包含抽象方法的类)增加abstract修饰符后也会变成抽象类。

public abstract class Shape
{
{
System.out.println("执行Shape的初始化块...");
}
private String color;
// 定义一个计算周长的抽象方法
public abstract double calPerimeter();
// 定义一个返回形状的抽象方法
public abstract String getType();
// 定义Shape的构造器,该构造器并不是用于创建Shape对象,
// 而是用于被子类调用
public Shape(){}
public Shape(String color)
{
System.out.println("执行Shape的构造器...");
this.color = color;
}
// 省略color的setter和getter方法
public void setColor(String color)
{
this.color = color;
}
public String getColor()
{
return this.color;
}
}


public class Triangle extends Shape
{
// 定义三角形的三边
private double a;
private double b;
private double c;
public Triangle(String color , double a
, double b , double c)
{
super(color);
this.setSides(a , b , c);
}
public void setSides(double a , double b , double c)
{
if (a >= b + c || b >= a + c || c >= a + b)
{
System.out.println("三角形两边之和必须大于第三边");
return;
}
this.a = a;
this.b = b;
this.c = c;
}
// 重写Shape类的的计算周长的抽象方法
public double calPerimeter()
{
return a + b + c;
}
// 重写Shape类的的返回形状的抽象方法
public String getType()
{
return "三角形";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息