java的抽象与接口

来源:互联网 发布:淘宝网大毛衣外套 编辑:程序博客网 时间:2024/06/06 10:53

一 java 的 抽象 与 接口
抽象用现实的话说就是看不懂的
抽象使用的关键词:abstract
1 abstract 修饰类 抽象类
2 abstract 修饰方法 抽象方法
3 抽象方法没有实现部分
注意 —– 抽象类的抽象方法干一件事就是强制子类去重写
注意 —– 抽象不能 实例化对象(就是不能用抽象类去创建)
创建子类对象的方式多态来创建
1 一个类没有抽象方法 可不可以 定义为 抽象类 如过可以那么作用是什么
作用 禁止创建抽象类的对象 只能使用此子类
2 abstract 能不能与那些关键字共存
abstract 和 static
static 修饰方法用类名去调用
abstract 修饰方法没有方法去实现 没有实现的方法 是方法的声明
abstract 和 final
final 修饰方法不能被重写
abstract 修饰就是为了让子类重写
所以不能共存
private 和 abstract
private 修饰方法 只能本类访问 子类访问不到 谈不上 重写方法

抽象类注意:
1 成员变量 可以有变量 也可以有常量
2 成员方法 可以有抽象方法 也可以有成员方法
3 构造方法 有
注意 抽象类不一定有抽象方法 但是抽象方法一定在抽象类中
抽象类的子类必须重写父亲的抽象类

public class Demo1 {    public static void main(String[] args) {        //Aniaml animal = new Animal();        //父类的指针指向纸箱子类的对象        Animal animal = new Cat();        animal.Eat();        animal.fun();        Animal.fun();    }}/** * 动物类 吃 * 猫吃鱼 */   abstract class  Animal{     int number = 10;    //final int  number  = 10;     //抽象方法    public  abstract void Eat() ;    public Animal() {        System.out.println("我是父类的构造方法");    }    public static void fun() {        System.out.println("我是成员方法");    }} class Cat extends Animal{          public Cat() {        // TODO Auto-generated constructor stub          super();    }    @Override    public void Eat() {      System.out.println(number);        // TODO Auto-generated method stub        System.out.println("猫吃鱼");    }}

二 接口
接口
1 狭义的接口:interface关键词修饰的 叫做接口
2 广义的接口:规则

如何定义一个接口
interface+接口名{}

接口的特点
1 接口中只能申明抽象方法
2 如果你不写 public abstract接口申明方法,系统会默认将他填上
所以最好写上默认的修饰词使用的抽象方法
接口也不能实例化对象:谁要用接口,谁就去实现接口的方法
可以使用多态的方式来实现类的对象
(接口相当于干爹 继承相当于亲爹)
接口的实现 使用 implements (实现)关键字

接口注意
成员变量 —– 可以有,但是只能是一个常量(public static final )
当你在接口申明变量时 系统会默认是final public static
书写建议:写熟了再说
成员方法 —– 只有抽象方法 , 没有成员方法
构造方法 —– 没有构造方法(他不是一个类)

类和类的关系
类和类的关系 继承关系 单继承 和 多继承
类和接口的关系
类和接口的关系是实现的关系 可以但实现也可以多实现(接口像干爹)
接口和接口的关系
单继承 也可以 多继承

public class Demo03 {    public static void main(String[] args) {        // TODO Auto-generated method stub        //interA a  = new interA() ;        interA A = new Person();        A.print();        System.out.println(interA.number);        interX X = new Car();        X.fun();    }}interface interA{    public static final int number = 10;    //int number = 10;    //public void fun(){};    //public interA() {};    //public int a = 12;    public abstract void print();    // print() ;}class Person implements interA{    //实现    public void  print() {        System.out.println(number);        System.out.println("我是人类的打印");    }}interface interX{    public abstract void fun();}interface InterY{    public abstract void fun1();}class Car implements interX , InterY{    public void fun() {        System.out.println("我是fun");    }    public void fun1() {        System.out.println("我是fun1");    }}interface interZ extends InterY , interX{}