首页 > 代码库 > Java面向对象之抽象类,接口

Java面向对象之抽象类,接口

抽象类:

含有抽象方法的类被声明为抽象类
抽象方法由子类去实现

含有抽象方法的类必须被声明为抽象类

抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法

抽象方法:

声明而未被实现的方法

抽象类不能被实例化
子类实现不了, 由下一级子类去实现, 当前类声明为抽象类, 继承的这个方法声明为抽象方法
抽象方法的权限修饰符必须为public

abstract

//人类public class Person {    private String name;    //自定义属性  引用类型 宠物    private Pet pet;        public Person() {            }        public Person(String name, Pet pet) {        this.name = name;        this.pet = pet;    }    public void petHappy() {        pet.scream();    }        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Pet getPet() {        return pet;    }    public void setPet(Pet pet) {        this.pet = pet;    }}
// 父类宠物类 抽象类public abstract class Pet {    private String pname;    //抽象类可以有构造方法    public Pet() {    }    public Pet(String pname) {        this.pname = pname;    }    //抽象类 的抽象方法   不能有方法体    public abstract void scream();    public String getPname() {        return pname;    }    public void setPname(String pname) {        this.pname = pname;    }}
//子类 老虎类public class Tiger extends Pet {    public String fur; // 毛的颜色    public Tiger(String name, String fur) {        super(name);        this.fur = fur;    }    public Tiger() {        super();    }    @Override    public void scream() {        System.out.println("这是一只老虎的声音 !");    }    public String getFur() {        return fur;    }    public void setFur(String fur) {        this.fur = fur;    }}
//子类 兔子类public class Rabbit extends Pet {    public String fur; // 毛的颜色    public Rabbit(String name, String fur) {        super(name);        this.fur = fur;    }    public Rabbit() {        super();    }    @Override    public void scream() {        System.out.println("兔子会卖萌 !");    }    public String getFur() {        return fur;    }    public void setFur(String fur) {        this.fur = fur;    }}
//主方法public class Main {    public static void main(String[] args) {        Pet t1 = new Tiger("qqqq","www");        Pet r1 = new Rabbit();                Person p1 = new Person("小明", t1);        Person p2 = new Person("小红", r1);                p1.petHappy();        p2.petHappy();    }}

技术分享

接口:

一种特殊的抽象类,里面全部是由全局常量和公共的抽象方法所组成

类与类之间的实现关系

接口的实现也必须通过子类,使用关键字implements,而且接口是可以多实现的

一个类可以同时继承和实现接口

一个借口不能集成一个抽象类,但是却可以通过extends关键字同时继承多个接口,实现接口的多继承

public interface InterFaceTest1 {    public static final String name = "hanqi";    String pname = "tianqi";    //接口定义的属性默认public static final    public void testMethod();}

 一个类去实现一个接口必须实现其中的方法

继承:Java中不支持多继承,一个类只能继承一个

接口:接口可以实现多个

//接口1public interface Inter {    int AGE=22;//接口中的常量都是全局常量,也就是默认 public全局公共的,static静态,final不可改变的    public abstract void tell(); }
//接口2public interface Inter2 {    public abstract void say();}
//接口3public interface Inter3 extends Inter,Inter2{    //接口继承接口    //一个接口不能继承一个抽象类,但可以继承多个接口,实现接口的多继承}
//抽象类public abstract class Chouxc {    public abstract void write();}
//子类public  class Shixian extends Chouxc implements Inter,Inter2{    public void tell(){        System.out.println("这是类实现的接口 Inter 的抽象方法");    }    public void say(){        System.out.println("这是类实现的接口 Inter2 中的抽象方法");    }    public void write(){        System.err.println("这是类继承的抽象类中的抽象方法");    }}
//主方法public class InterTest1 {    public static void main(String[] args) {        // TODO Auto-generated method stub        Shixian s=new Shixian();        s.tell();        s.say();        System.out.println(Inter.AGE);        System.out.println(s.AGE);    }}

技术分享

 

Java面向对象之抽象类,接口