java 基础学习day10

1.接口(interface)

(1)接口的由来 当抽象方法中定义的成员方法全是抽象方法时,这是可以定义成接口

(2)解决了java中单继承的问题,对多继承进来了优化

   a.类与类只能单继承,extends

   b.接口与接口,可以单继承,也可以多继承

   c.类与接口,可以单实现,也可以多实现,implements

(3)成员特点

  a.只有成员变量和成员方法

  b.成员变量 public static final(系统默认)

  c.成员方法 public abstract  (系统默认)

(4)接口的特点

  a.接口是对外曝入的规则

  b.接口是功能的扩展

  c.侠义:Java中的接;广义:任何定义有规范的接口

(5)接口和抽象类的区别:
  A:抽象类只能被单继承;接口可以被多实现。
  B:抽象类中的成员:成员变量:可以是常量,也可以是变量。
        成员方法:可以是抽象的,也可以是非抽象的。
        构造方法:虽然不可以创建对象,但是可以给子类实例化用。
        接口中的成员:成员变量:只能是常量。默认修饰符 public static final
        成员方法:只能是抽象的。默认修饰符 public abstract
  C:抽象类中定义的是体系结构中的共性的内容。
        接口中定义的是对象的扩展功能。
  D:抽象类被继承表示的是:"is a"的关系。xx是yy中的一种。
         接口被实现表示的是: "like a"的关系。xx像yy中的一种。

学生:Student
  A:属性:学号,姓名,年龄
  B:方法:学习(study),吃饭(抽象eat),抽烟(是不是所有的学员都抽烟呢?),
     篮球(是不是所有的人都会打篮球呢?)

  分析:学员都具备学习的行为和吃饭的行为,但是并不是所有的学员都抽烟,也不是所有的学员都打篮球
      interface Smoking {
   public abstract void smoking();
   }
   interface Sport{
   public abstract void playBasketBall();
   }
  
    描述的是即会抽烟又会打篮球的学生:SmokeStudent extends Student implements Smoking,Sport
  一个类只能继承一个类,但是可以实现多个接口,每实现一个接口,功能就扩展了一部分
  SmokeStudent ss = new SmokeStudent();
  ss.eat();
  ss.study();
  ss.smoking();
  ss.playBasketBall();

2:多态
 (1)某一类事物的多种存在形态。
  **方法重载(静态多态)
  **方法重写(动态多态,对象多态)
 (2)对象多态的前提
  A:类与类(或接口)要有继承(或实现)关系。
  B:一定要有方法的重写。
  C:一定要有父类或者接口的引用指向子类的对象。Person p = new SuperMan();
              SuperMan sm = (SuperMan)p;
 (3)多态思想:可以指挥同一类型的一批对象做事情。多态的出现让我们复杂的问题简单化了。
  A:Animal Cat Dog
   **method(Animal a){a.eat();}//Animal a = new Cat();
 (4)多态中成员的特点:(我们只研究特殊的,就是说名字一样的东西)
  Fu f = new Zi();
  A:成员变量:编译和运行都看Fu。
  B:非静态方法:编译看Fu,运行看Zi。
  C:静态方法:编译和运行都看Fu。
  
  举例: 动物的例子:
   向上转型
   Animal a = new Cat();
   a.eat();
   //a.catchMouse();

   向下转型
   Cat c = (Cat)a;
   c.eat();
   c.catchMouse();

   //向上转型
   Animal a = new Dog();
   //向下转型 转换异常
   //Cat c = (Cat)a;
   Dog d = (Dog)a;

   超人的例子:
   person :谈生意();
   SuperMan:谈生意();fly();

   Person p = new SuperMan();//超人没变身之前就是普通人一个,只能调用Person里的方法
   //在运行的时候发现有SuperMan这个子类继承了他,会去看里面是否有和你调用Person里相同的方法
   //如果有运行就执行子类重写的方法(成员函数的特性,覆盖)
   p.谈生意();

   SuperMan sm= (SuperMan)p;//内裤外穿,变身超人
   sm.谈生意();
   sm.fly();
   总结:无论是向上转型还是向下转型,变化的都是子类对象,绝对不能把父类对象强转为子类类型

 

 

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值