java--多态、抽象类、接口 灰太狼 2022-05-13 14:40 236阅读 0赞 # 多态、抽象类、接口 # ### 多态 ### ![在这里插入图片描述][70] ### 多态代码演示 ### 父类 public class Fu { int i=199; public Fu() { System.out.println("我是父类构造方法"); } public void show(){ System.out.println("我是父类show方法"); } } 子类 public class Zi extends Fu{ int i=100; public Zi() { //super();默认就有的父类引用,因此会先初始化父类构造函数 System.out.println("我是子类构造函数"); } @Override public void show() { System.out.println("我是子类重写的show方法"); } public void show1(){ System.out.println("我是子类特有的show1方法"); } } 测试类 public class Text { public static void main(String[] args) { Fu f=new Zi(); System.out.println(f.i);//因为在多态时先指向的是父类,因此结果是199,请看下面示意图 f.show(); //如果不加这一句直接写f.show1(); 这段代码会报错,因此要想调用子类特有成员,就要强制转化成子类 Zi z=(Zi)f; z.show1(); } } 结果 我是父类构造方法 我是子类构造函数 199 我是子类重写的show方法 我是子类特有的show1方法 以上示意图 ![在这里插入图片描述][70 1] ### 抽象类 ### 抽象类好比就是动物这个概念,动物里有各种各样的生物,比如说猫和狗,它们都有共同的动作(如:吃饭、睡觉),但是这些动作表达的方式却又不同,因此我们运用到了抽象这个概念,把共同的动作写在抽象类中,通过不同个体(类)对它进行表达(重写)。 ![在这里插入图片描述][70 2] ### 抽象类代码演示 ### 抽象类 public abstract class Abstract { int i=100;//变量 final double f=19.3;//常量 public abstract void show();//抽象方法 public abstract void show1();//抽象方法 //具体方法 public void show3(){ System.out.println("我是抽象类的具体方法"); } } 子类 public class AbstractZi extends Abstract{ //方法重写 @Override public void show() { System.out.println("我是子类的重写的show方法"); } @Override public void show1() { System.out.println("我是子类重写的show1方法"); } } 测试类 public class AbstractText { public static void main(String[] args) { AbstractZi z = new AbstractZi();//new对象 z.show(); z.show1(); z.show3(); System.out.println(z.i+"\t"+z.f); } } 结果 我是子类的重写的show方法 我是子类重写的show1方法 我是抽象类的具体方法 100 19.3 ### 接口 ### 接口就是我们用来扩展某项功能的,比如马戏团的猫和普通猫不同,马戏团里的猫会跳火圈、计算等,这只是猫中的一部分会,这个额外的动作就需要我们用接口来定义。 ![在这里插入图片描述][70 3] ### 接口代码演示 ### 接口 interface Base { public static final int k = 0;//只能是公共静态常量 public abstract void show();//方法声明(public abstract可以不写,系统会自动隐式加上) public abstract void show1(); } 实现类 class Demo implements Base { @Override public void show() { System.out.println("我重写了show方法"); } @Override public void show1() { System.out.println("我重写了show1方法"); } } 测试类 public class Text { public static void main(String[] args) { Demo d = new Demo(); d.show(); d.show1(); System.out.println(d.k); } } 结果 我重写了show方法 我重写了show1方法 0 [70]: /images/20220504/e9841e1fec05422f8a5cf9065dde6149.png [70 1]: /images/20220504/868f9398f3dd494b8d1f8dc48e9b4011.png [70 2]: /images/20220504/d0c42ba319c544009796a94eb2d5fd76.png [70 3]: /images/20220504/68ebf9b3dfe841859ab904f7a4a75eac.png
还没有评论,来说两句吧...