java几何类的接口_JAVA 抽象类、接口

一、抽象类

1、语法定义

在类前面使用 abstract 修饰的类就是抽象类

2、应用场景:

(1)在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。

(2)从多个具有相同特征的子类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。

3、作用:

限制规定子类必须实现的某些方法,但不关注实现细节。

4、使用规则:

(1)使用abstract定义抽象类

(2)abstract定义抽象方法,只有声明,不需要实现

(3)抽象类中可包含一般方法,不一定包含抽象方法,但包含抽象方法的类一定要声明为抽象类

(4)抽象类中定义构造方法是多余的

(5)抽象类不能直接创建,可以定义引用变量

(6)abstract 不能与private、static、final、或native并列修饰同一方法

(7)若一个类被定义为抽象类,则该类就不能用new运算符创建具体实例对象,而必须用覆盖的方式来实现抽象类中的方法

如对于几何形状,是一个抽象的概念,由此可派生出"长方形"、“圆形”等具体的几何形状,所以把形状(Shape)定义为抽象的父类。此外,如果要规定每个形状类都编写计算其面积和长度的方法。由于每个具体的几何形状的面积和周长计算方法不同,所以放在父类不恰当。可以将其定义为抽象方法,具体处理方式放在子类中定义

public class demo1 {

/**

* @param args

*/

public static void main(String[] args) {

Shape rec = new Rectangle("长方形", 3.5, 5); //声明父类对象,指向子类对象

System.out.print("面积="+rec.getArea());

System.out.println("周长="+rec.getLength());

Circle cir = new Circle("圆", 3.5);

System.out.print("面积="+cir.getArea());

System.out.print("周长="+cir.getLength());

}

}

abstract class Shape{ //定义抽象类Shape

protected String name;

public Shape(String xm)

{

name = xm;

System.out.println("名称:"+name);

}

abstract public double getArea(); //声明抽象方法

abstract public double getLength();

}

class Circle extends Shape //定义继承来自Shape的子类Circle

{

private final double PI = 3.14;

private double radius;

public Circle(String shapeName,double r) //构造方法

{

super(shapeName);

radius=r;

}

public double getArea() {

return PI*radius*radius;

}

public double getLength() {

return 2*PI*radius;

}

}

class Rectangle extends Shape //定义继承来自Shape的子类Rectangle

{

private double width;

private double height;

public Rectangle(String shapeName,double width,double height)

{

super(shapeName);

this.width = width;

this.height = height;

}

public double getArea() {

return width*height;

}

public double getLength() {

return 2*(width+height);

}

}

二、接口

1、接口定义

接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类方法的具体实现,它只规定这些类里必须提供的某些方法。

接口实际上就是一种特殊的抽象类。

2、定义方法:

使用 interface关键字:

[修饰符] interface 接口名[extends父接口1,父接口2……]

{

0个~多个常量定义

0个~多个抽象方法定义

}

3、接口定义:

接口中的方法只能是抽象方法,总是使用,即使定义时不添加public  abstract修饰符,系统也是默认加上的。

4、使用接口:

(1)接口的数据成员必须初始化

(2)接口中的方法必须全部声明为 abstract ,接口的方法必须全部是抽象方法

ce31c50b60f52ce4adfa42d300552086.png格式固定,不能改变extends和Implements顺序的调换。

生成接口:

3c69fef69fcdae3a460f546c6e137e24.png

7f8A7QTrs6Fn3vcAAAAASUVORK5CYII=

也可以自己写

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 public classdemo1 {2 /**

3 *@paramargs4 */

5 public static voidmain(String[] args) {6 IShape cir = new Circle(3.5);7 System.out.print("面积="+cir.getArea());8 System.out.println("周长="+cir.getLength());9 Rectangle rec = new Rectangle(3.5, 5); //声明父类对象,指向子类对象

10 System.out.print("面积="+rec.getArea());11 System.out.println("周长="+rec.getLength());12

13 }14 }15

16 interfaceIShape {17 final double PI = 3.14;18 abstract double getArea(); //声明抽象方法

19 abstract doublegetLength();20

21 }22

23

24

25 class Circle implements IShape //以IShape接口来实现Circle类

26 {27 private doubleradius;28 public Circle(double r) //构造方法

29 {30 this.radius=r;31 }32 public doublegetArea() {33 return PI*radius*radius;34 }35 public doublegetLength() {36 return 2*PI*radius;37 }38

39 }40

41 class Rectangle implements IShape //以IShape接口来实现Circle类

42 {43 private doublewidth;44 private doubleheight;45 public Rectangle(double width,doubleheight)46 {47 this.width =width;48 this.height =height;49 }50 public doublegetArea() {51

52 return width*height;53 }54 public doublegetLength() {55

56 return 2*(width+height);57 }58 }

View Code

5、接口的继承:

与类相似,接口也有继承性,定义接口时可通过extend关键字声明该新接口是某个已存在父接口的子接口,将继承父接口的所有变量和方法。

与类的继承不同的地方是,一个接口可以有一个以上的父接口,之间用“,”隔开。若子接口中定义了与父接口同名的常量或者相同方法,将覆盖。

三、内部类与匿名类

内部类是定义在类中的类,主要作用是将逻辑上相关的类放在一起;而匿名类是一种特殊的内部类,没有类名,在定义类的同时,就生成该类的实例,由于不会再其他地方用到该类,所以不用取名字。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值