码迷,mamicode.com
首页 > 其他好文 > 详细

抽象类,接口

时间:2017-10-30 21:54:24      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:name   private   单词   stc   set   sys   rac   方式   方法   

抽象方法的概念:

当多个具体的实类存在着共同的行为,但是有不同的表现(学生和老师都睡觉,老师睡职工宿舍,学生睡在学生宿舍),在子类继承过程中父类方法的具体实现不能确定,但是能确定的是他们都有这种行为,我们把这种行为方法称为抽象方法。

抽象方法的语法:

      public     abstract    [返回值]      [void]      方法名(参数列表);没有方法体。

如果一个类中存在这么一个方法,那么这个类一定是抽象类。这个类上也要有abstract标识。

抽象类的语法:

     abstract   class   类名{

            属性

            方法

}

PS:抽象类中可以没有抽象方法,但是有抽象方法的一定是抽象类。

abstract class Cat{
    //抽象类
    String name;
    int age;
    public abstract void sleep();
}

class BigCat extends Cat{
    public void sleep(){
        System.out.println(this.name+"在地毯上睡觉");
        }
    }
    
class SmallCat extends Cat{
    public void sleep(){
        System.out.println(this.name+"在窝里睡觉");
        }
    }
class TestCat{
    public static void main(String[] args){
        BigCat bg = new BigCat();
        bg.name = "大黑";
        bg.sleep();
        SmallCat sc = new SmallCat();
        sc.name = "二黑";
        sc.sleep();
        }
    }

抽象类的特点:

1.抽象类不能被实例化

2.如果一个子类继承了抽象类就必须实现抽象类里的所有抽象方法

3.抽象类必须被子类继承才能使用子类实例化

4.抽象类也可以继承抽象类,这样不需要实现父抽象类里的抽象方法

5.抽象类的抽象方法不能和private,static,final共存。

 

接口:

一个抽象类中,如果抽象类中的所有方法都是抽象的,那么我们就可以把它定义为一个接口,接口是对行为的抽象,类是对属性和行为的抽象。

语法:

     interface    接口名{

           方法的定义;

}

在接口中,每一个方法的定义都是抽象的,可以省略abstract,接口是不可以实例化的,需要有类来实现接口。

实现接口的语法:

    class   类名    implements    接口名,接口名,...{

        //实现接的类必须实现接口中的所有方法

 }

 

接口中的方法不能和static,final,private共存。

接口中的属性默认都是static final 类型的。(通过接口名.属性名来访问,接口中的属性一般都是常量,并且不能修改,常量的名字规范是单词大写,多个单词之间使用下划线来分隔。)

接口可以继承接口,可以实现多继承和多级继承。

 

使用接口方式来计算圆,正方形的面积和周长

//定义一个接口里面有计算面积和周长的方法
interface CalInter{
    public double getArea();
    public double getLength();
    //定义一个常量π
    double PAI = 3.14;
    }

//定义一个圆的类然后实现接口里的方法
class Circle implements CalInter{
    //实现计算面积的方法,先定义圆的半径
    private double r;
    //定义一个可以传参数的构造器
    public Circle(double r){
        this.r = r;
        }
    //或者直接定义一个公共的set和get方法对r进行传参数和取值
    /**
    *public void setR(double r){
        this.r = r;
        }
     public double getR(){
        return r;
        }
    */
    //实现方法完成计算
    public double getArea(){
        return r*r*CalInter.PAI;
        }
    public double getLength(){
        return 2*r*CalInter.PAI;
        }
    }
    
class CalculateArea{
    public static void main(String[] args){
        Circle c = new Circle(3);
        double area = c.getArea();
        double length = c.getLength();
        System.out.println("半径为3的圆的面积为:"+area+"    周长为:"+length);
        }
    }

 

抽象类,接口

标签:name   private   单词   stc   set   sys   rac   方式   方法   

原文地址:http://www.cnblogs.com/chenttc/p/7756896.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!