泛不系舟

天行健,君子以自强不息;地势坤,君子以厚德载物。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1、父类方法不能确定时 ,可以用abstract关键字来修饰该方法;

2、当一个类继承的父类是抽象类的话,需要我们把抽象类中的所有抽象方法全部实现;

抽象类的注意事项:
1、抽象类不能被实例化;
2、抽象类不一定要包含抽象方法,也就是说,抽象类可以没有abstract方法;
3、一旦包含类abstract方法,则这个类必须声明为abstract;
4、抽象方法不能有主体,如:abstract void aaa(){};

------------------------------------------------------------------------------------------

接口就是给出一些没有内容的方法,封装在一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。语法如下:

class 类名 implement 接口 {
方法;
变量;
}

接口是更加抽象的抽象类,抽象类里的方法可以有方法体,接口里的所有方法都没有方法体。
接口体现了程序设计的多态和高内聚低耦合的设计思想。

接口的注意事项:
1、接口不能被实例化;
2、接口中所有的方法都不能有主体;
3、一个类可以实现多个接口;
4、接口中可以有变量(但变量不能用private和protected修饰),接口中的变量本质上都是static的,而且是final,不管你加不加static修饰;在java开发中,我们经常把经常用的变量,定义在接口中作为全局变量使用;
5、一个接口不能继承其他的类,但可以继承别的接口;

实现接口VS继承类
java的继承是单继承,也就是一个类最多只能有一个父类,这种单继承的机制可保证类的纯洁性,比C++中的多继承机制简洁。
1、实现接口可以看作是对继承的一种补充;
2、实现接口可在不打破继承关系的前提下,对某个类功能扩展,非常灵活;

interface Usb{
    int a=1;
    public void start();
    public void stop();
}

class Camera implements Usb{
    public void start(){
        System.out.println("Camera is starting");
    }

    public void stop(){
        System.out.println("Camera is stoping");
    }
}

class Phone implements Usb{
    public void start(){
        System.out.println("Phone is starting");
    }

    public void stop(){
        System.out.println("Phone is stoping");
    }
}

class Computer{
    public void useUsb(Usb usb){
        usb.start();
        usb.stop();
    }
}
public class Test {
    public static void main(String[] args){
System.out.println(Usb.a);
        Computer computer=new Computer();
        Camera camera=new Camera();
        Phone phone=new Phone();
        computer.useUsb(camera);
        computer.useUsb(phone);
    }
}

再一典型实例:

interface Car{
    String getName();
    int getPrice();
}

class BMW implements Car{
    public String getName(){
        return "BMW";
    }
    public int getPrice(){
        return 300000;
    }
}

class CheryQQ implements Car{
    public String getName(){
        return "CheryQQ";
    }
    public int getPrice(){
        return 30000;
    }
}
public class CarShop {
    private int money=0;
    public void sellCar(Car car){
        System.out.println("车型:"+car.getName()+",单价:"+car.getPrice());
        money+=car.getPrice();
    }
    public int getMoney(){
        return money;
    }

    public static void main(String args[]){
        CarShop carShop=new CarShop();
        carShop.sellCar(new BMW());
        carShop.sellCar(new CheryQQ());
        System.out.println("总销售额:"+carShop.getMoney());
    }
}

 =============================================================

final注意事项:
1、final修饰的变量又叫常量,一般用xx_xx_xx来命名;
2、final修饰的变量在定义时,必须赋值,并且以后不能再赋值或修改;

final使用时机:
1、因为安全的考虑,类的某个方法不允许修改;
2、类不会被其他的类继承;
3、某些变量值是固定不变的,比如圆周率3.1415926

posted on 2015-10-11 22:35  惊蝴蝶  阅读(253)  评论(0编辑  收藏  举报