面向对象进阶--接口、多态

接口:

 1 package com.unit10.test;
 2 
 3 //属性是全局静态常量
 4 //方法必须是public抽象方法
 5 //没有构造方法
 6 //无法实例化
 7 public interface Mp3 {
 8     String discrib="这是MP3接口";
 9     
10     public abstract void playMusic();
11 }

 

package com.unit10.test;

public interface Map {
    public abstract void showmap();
}

 

1 package com.unit10.test;
2 
3 public interface Wallet {
4     public abstract void pay();
5 }

 

1 package com.unit10.test;
2 
3 public abstract class Phone {
4     public abstract void call();
5 }

 

 1 package com.unit10.test;
 2 
 3 public class Cellphone extends Phone implements Mp3,Map,Wallet{
 4     public void playMusic() {
 5         System.out.println("开始播放音乐");
 6     }
 7 
 8     @Override
 9     public void call() {
10         System.out.println("开始打电话");
11     }
12 
13     @Override
14     public void pay() {
15         System.out.println("开始支付");
16         
17     }
18 
19     @Override
20     public void showmap() {
21         System.out.println("开始导航");
22         
23     }
24     
25 }

 

 1 package com.unit10.test;
 2 
 3 public class test {
 4 
 5     public static void main(String[] args) {
 6         Cellphone p=new Cellphone();
 7         p.playMusic();
 8         p.call();
 9         p.pay();
10         p.showmap();
11 
12     }
13 
14 }

 

多态:

1 package com.unit11.test;
2 
3 public abstract class Pet {
4     public abstract void eat();
5 
6 }

 

 1 package com.unit11.test;
 2 
 3 public class Cat extends Pet{
 4 
 5     @Override
 6     public void eat() {
 7         System.out.println("猫开始吃鱼!看起来内心毫无波澜!");
 8         
 9     }
10     
11     public void sleep() {
12         System.out.println("猫吃完了!开始睡觉!");
13     }
14     
15 }

 

 1 package com.unit11.test;
 2 
 3 public class Dog extends Pet{
 4 
 5     @Override
 6     public void eat() {
 7         System.out.println("狗开始吃骨头!非常凶猛!");
 8         
 9     }
10 
11 }

 

 1 package com.unit11.test;
 2 
 3 public class Master {
 4     //pet可以是Pet子类的实例
 5     public void feed(Pet pet) {
 6         System.out.println("主人开始喂食!");
 7         pet.eat();
 8         
 9         //instanceof 判断一个对象是否为一个类的实例
10         if(pet instanceof Cat) {
11             System.out.println("传进来的是猫的对象");
12             Cat cat=(Cat)pet;  //向下转型(强制转型)必须保证对象原本就是这个子类
13             cat.sleep();
14         }
15     }
16 }

 

 1 package com.unit11.test;
 2 
 3 public class test {
 4     
 5     public static void main(String[] args) {
 6         Master m=new Master();
 7         Cat c=new Cat();  //向上转型(自动)
 8         Dog d=new Dog();
 9         m.feed(c);
10 //        m.feed(d);
11         
12     }
13 
14 }

 

posted on 2020-06-21 16:25  cherry_ning  阅读(78)  评论(0)    收藏  举报

导航