JAVA高级部分(接口)

    JAVA当中十分重要的一个关节
    接口:
1.简单介绍
    接口所体现的思想就是[规则]
        如果发现了一个类:
                1.没有任何的成员变量,普通的成员方法
                2.没有任何的普通的构造方法
                那么就是一个要制订规则的类:接口

           接口的定义格式:
           interface 类名称{
           }

           对于接口的规则进行设计接受的创建:
           class 类名 implacement 接口的类名{

           在这里需要输入具体的方法,从而实现一次方法重载
           让接口完整

           }

    接口在日常生活当中就十分常见,插座,手机,电脑的接口等等,站在设计者的角度来看,这个接口的形状,更像是一种设计的规则
    在JAVA当中也是这个原理,接口就是一种对规则的声明

    2.接口的特殊注意事项

        1)接口不能够进行一个实例化(其实接口有很多跟抽象的一些注意事项是大差不差的),不能够创建对象

        2)接口之间的关系是直接通过implacement而直接实现的
            接受接口的两种规则:
                    1.对接口当中所有的方法再次重新进行构造(推荐使用这一种,平常也是这样)  ---重写所有的抽象方法
                    2.创建一个新的接口进行一个接收(过于麻烦)---将所有的现实类都转变成为一个跟接口一样的抽象类
    
public static void main(String[] args) {
    }
}
interface inter{
    public abstract void show();
    public abstract void method();
    public abstract void way();
}

class interment implements inter{
    public void show(){
        System.out.println("我要吃~~~~饭");
    }
    public void method(){
        System.out.println("我要睡~~~~觉");
    }
    public void way(){
        System.out.println("我要回~~~~寝!");
    }
}

3.接口中的成员特点(主要区分为两大类型):

一:

1>成员变量:

        如果在抽象类当中定义一个成员变量,那么系统将会固定的在相应的成员变量之前添加上一个

public(可以跨包进行一个访问,访问权限比较的大)

static(可以直接使用相应的类名进行直接调用相应的成员变量,相应的,成员变量也会进行一个共享)

final(直接终断相应的成员变量初始化,在之后的方法当中无法再进行修改)

这三个特点会在编码当中自主的存在,所以不需要再进行打印

2>构造方法:

        在接口当中是不存在任何有逻辑的方法的,构造方法也不会在接口当中存在

3>成员方法:

        在接口当中构建的成员方法都会是一个抽象的方法,会在相应的方法前自主的添加abstract

所以只能够按照抽象类的抽象方法来直接的使用

二:

接口与接口之间:不仅存在单线关系,也存在多线的关系,甚至还能够进行多层次的使用

interface A{
    void showA();
}

interface  B{
   void showB();
}
//接口与接口之间可以是一个继承的关系,相当是认了一个干爹,但是亲爹在这里还是可以直接super的
//原因是,亲爹还是object(祖宗).还可以同时的继承多个亲爹

interface C extends A,B{
    void showC();
}

class D implement C{
    public void showA(){
}
    public void showB(){
}
    public void showC(){
}


}

2.类与类之间:

只支持单继承,不支持多继承,但是支持多层次的继承(就是可以A-->B-->C)

3.类与接口之间:

实现的关系,可以单实现,可以多实现,甚至可以在继承的同时实现多个接口的执行(在倒数第一张代码的最后几行也有体现,接口AB,又实现了C)

tips:

在接口当中是不存在逻辑问题的,因为在其中构建的方法本身就没有逻辑.因为这样的存在,接口之间才能够多线进行一个继承

OVER

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
本文是一个word讲义 介绍了 Figure circle Rectangle等类在接口中计抽象类中的用法 抽象类 接口多态 public class Polymorphism { public static void main(String args[]) { Triangle t=new Triangle(5.0,2.0); t.show_area(); Rectangle r=new Rectangle(3.0,4.0); r.show_area(); Circle c=new Circle(10.0); c.show_area(); } } abstract class Figure { protected double x=10.0,y=5.0; abstract void show_area(); } class Triangle extends Figure { Triangle(double a,double b) { x=a; y=b; } void show_area() { System.out.println("triangle:"+(0.5*x*y)); } } class Rectangle extends Figure { Rectangle(double a,double b) { x=a; y=b; } void show_area() { System.out.println("rectangle:"+(x*y)); } } class Circle extends Figure { Circle(double a){x=a;} final double pi=3.1416; void show_area() { System.out.println("circle:"+(pi*x*x)); } } package inf; interface Figure { abstract double area(); } //Rectangle.java package inf; /** * * @author tai */ public class Rectangle implements Figure{ double width,height; public Rectangle(double w,double h) //构造方法 { width=w; height=h; } public double area(){ return (width * height); } } //Triangle.Java package inf; /** * * @author tai */ class Triangle implements Figure { double a; double b; double c; Triangle(double a,double b,double c) { this.a=a; this.b=b; this.c=c; } public double area() { double p=(a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); } } //Circle.java package inf; /** * * @author tai */ class Circle implements Figure { double radius; Circle(double radius) { this.radius=radius; } public double area() { return Math.PI*radius*radius; } } 测试一: public class Test4 { public static void main(String args[]) { Triangle t=new Triangle(5.0,6.0,7.0); System.out.println("三角形面积="+t.area()); Rectangle r=new Rectangle(3.0,4.0); System.out.println("矩形面积="+r.area()); Circle c=new Circle(10.0); System.out.println("圆的面积="+c.area()); } } 测试二: package inf; import javax.swing.JOptionPane; public class Test5 { public static double totalArea1(Figure f[]) { double totalArea=0; for(Figure f1:f){ totalArea+=f1.area(); } return totalArea; } public static void main(String args[]) { Figure f[] =new Figure[3];//为什么 f[0]=new Triangle(5.0,6.0,7.0); f[1]=new Rectangle(6.0,87.0); String input=JOptionPane.showInputDialog("输入圆的半径"); Double r=Double.parseDouble(input); f[2]=new Circle(r); double totalArea=0; for(Figure f1:f){ totalArea+=f1.area(); } JOptionPane.showMessageDialog(null,"totalarea="+totalArea); JOptionPane.showMessageDialog(null,"totalarea1="+totalArea1(f)); } }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值