关于类和接口及代码示例

接口就是一些方法的声明,大概就是把差不多的属性(方法)都放在一个接口里

 

protected的作用:

主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。

public的作用:

具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。

default的作用:

有时候也称为friendly,它是针对本包访问而设计的,任何处于本包下的类、接口、异常等,都可以相互访问,即使是父类没有用protected修饰的成员也可以。

private的作用:

访问权限仅限于类的内部,是一种封装的体现,例如,大多数成员变量都是修饰符为private的,它们不希望被其他任何外部的类访问。

注意:java的访问控制是停留在编译层的,也就是它不会在.class文件中留下任何的痕迹,只在编译的时候进行访问控制的检查。其实,通过反射的手段,是可以访问任何包下任何类中的成员,例如,访问类的私有成员也是可能的。

区别:

public:可以被所有其他类所访问

private:只能被自己访问和修改

protected:自身、子类及同一个包中类可以访问

default:同一包中的类可以访问,声明时没有加修饰符,认为是friendly。

Java简介

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

Java由四方面组成:

1、Java编程语言,即语法。

2、Java文件格式,即各种文件夹、文件的后缀。

3、Java虚拟机(JVM),即处理*.class文件的解释器。

4、Java应用程序接口(Java API)。

Java分为三个体系

1、Java SE(J2SE,Java2 Platform Standard Edition,标准版)。

2、JavaEE(J2EE,Java 2 Platform, Enterprise Edition,企业版)。

3、Java ME(J2ME,Java 2 Platform Micro Edition,微型版)

 

以下的原文在这里

public interface Volume {   //定义接口
 public abstract double getVolume();

}

 

public class Circle {    //定义圆形类

 double r;
 public Circle(double r){
     this.r=r;
    }
    public double getS(){   //面积
     return Math.PI*r*r;
    }
    public double getL(){  //周长
     return 2*Math.PI*r;
    }
}

 

public class Cylinder extends Circle implements Volume{    //定义圆柱体
    double h;
 public Cylinder(double r,double h){
  super(r);
  this.h=h;  
 } 
 public double getArea(){   //表面积
  return h*getL()+2*getS();
 }
 public double getVolume(){  //体积
  return h*getS();
 }
 
 public static void main(String[] args) {
  Cylinder c1=new Cylinder(5,10);
  System.out.println("表面积:"+c1.getArea());
  System.out.println("体积:" +c1.getVolume());

 }

}

注:接口和2个类要分别放到3个文件中。圆锥体类由你们自己定义。

 

实验目的

理解接口的作用,理解接口和实现接口的类的关系,掌握声明接口、一个类实现接口的声明和使用方法;熟悉Java语言包和实用包中的常用类。

实验内容:(*)为选做

  1. 声明圆柱体类Cylinder,继承椭圆类Ellipse(实现周长Perimeter接口和面积Area接口),为圆柱体类设计较为全面的构造方法,并实现体积Volume接口,计算表面积和体积。
  2. 将Java的若干关键字(15个以上)保存在一个字符串数组中,对其按升序排列,再采用顺序查找和二分法查找,判断一个字符串是否是Java关键字。
  3. (*) 调试和修改” 实验4-src.zip”中的源代码,使GroupSort程序能正确执行。再在GroupSort.java中增加按姓名查找的模糊查询和按出生日期排序的功能。比如,在Person对象数组中模糊查找名字包含”小”字的对象。

实验要求:

1. 在实验报告中给出程序运行结果截图。

2. 源程序代码附到实验报告的最后。

3. 认真填写实验报告并妥善存档,在上机实验课之前发送电子版实验报告至 wsycup@foxmail.com

注意,“邮件标题”与“附件实验报告文件名”均为:

Java2实验报告N_学号_姓名

其中N为阿拉伯数字,指第几次实验,例如:

Java2实验报告3_ 2012010400_李雷

请严格按照规定的格式发送邮件(注意标题中“Java”后的数字“2”),邮件标题不符合格式要求等同于未交作业,并在规定的时间发送实验报告邮件,过期无效。

4. 实验报告雷同者将不能得到相应的平时分。

 

 

附录:实验报告

实验题目__实验四___

学号_2014011329_    姓名_许恺__     班级__计算机14-1____     时间__2016.4.26____

实验题目解答

一.

 

二.

 

:源程序

一.

复制代码

Cylinder.Java
package one;

public class Cylinder extends Ellipse implements IVolume{

    /**
     * @param args
     */
    int high;
    Cylinder(){
        this.high=6;
    }
    public double Volume(){
        return radius_a*radius_b*3.14*high;
    }
    public double Area(){
        return radius_a*radius_b*3.14*2+high*Perimeter();
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        IVolume A=new Cylinder();
        IVolume V=new Cylinder();
        System.out.println("表面积是"+A.Area());
        System.out.println("体积是"+V.Volume());
    }

}
Ellipse.java
package one;

public class Ellipse implements IPerimeter,IArea{ //椭圆类
    protected double radius_a; //a轴半径
    protected double radius_b; //b轴半径
    public Ellipse(double radius_a) { //构造方法
        this.radius_a = radius_a;
    }
    public Ellipse(double radius_a, double radius_b) { //构造方法
        this.radius_a = radius_a; this.radius_b = radius_b;
    }
    public Ellipse() { this(4,4); }
    public String toString() {
        return "a轴半径"+this.radius_a+",b轴半径"+this.radius_b;
    }
    public double Area() { //计算椭圆面积,覆盖父类的抽象方法
        return Math.PI*this.radius_a*this.radius_b;
    }
    public double Perimeter(){ //计算椭圆周长,覆盖父类的抽象方法
        return Math.PI*(this.radius_a+this.radius_b);
    }
}

IArea.java
package one;

public interface IArea {
    public double Area();
}

IPerimeter.java
package one;


public interface IPerimeter {
    public double Perimeter();
}

IVolume.java
package one;

public interface IVolume {
    public double Volume();
    public double Area();
}


二.
package two;
import java.util.Arrays;
public class Q2 {
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] a=new String[20];
        String b=new String();
        String c=new String();
        b="g";
        a[0]="a";a[1]="b";a[2]="c";a[3]="d";a[4]="e";a[5]="f";a[6]="g";a[7]="h";
        a[8]="i";a[9]="j";a[10]="k";a[11]="l";a[12]="m";a[13]="n";a[14]="o";
        for(int i=0;i<15;i++){
            for(int j=i+1;j<15;j++){
                if(a[i].compareTo(a[j])>0){
                    c=a[i];
                    a[i]=a[j];
                    a[j]=c;
                }
            }
        }
        if(sxcz(b,a)){
            System.out.println("顺序查找法已查找到");
        }
        else{
            System.out.println("顺序查找未找到");
        }
        if(efcz(b,a)){
            System.out.println("二分法查找法已查找到");
        }
        else{
            System.out.println("二分法查找未找到");
        }
    }
    public static boolean sxcz(String b,String[] a){
        for(int i=0;i<20;i++){
            if(b==a[i]){
                return true;
            }
        }
        return false;
    }
    public static boolean efcz(String b,String[] a){
        int front=0;
        int end=14;
        int mid=7;
        for(;end>=front;){
            if(a[mid]==b)
                return true;
            else if(a[mid].compareTo(b)>0){
                end=mid-1;
                mid=(mid+front)/2;
            }
            else{ 
                front=mid+1;
                mid=(front+end)/2;
            }
        }
        return false;
    }
}

复制代码

 

 

反思与总结:

这次实验锻炼了对于接口的使用,也让我更加理解接口的功能和在整个java体系中的位置和作用,我觉的对于接口的使用和理解还可以更加的深入一些,让大家我们更加体会到java语言的强大。

 

以上来自于https://www.cnblogs.com/xukaiae86/p/6443107.html

写得真的很棒了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值