首页 > 代码库 > 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面向对象之抽象类,接口
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。