JAVA学习总结10

多态总结
  • 使用父类类型的引用(类型),指向子类的对象(new); Animal a = new dog();
  • 该引用只能调用父类中定义的方法,不能调用子类中独有的方法; 
  • 在多态中,子类可以调用父类所有的方法;
  • 多态主要体现在重载和重写。相同的行为有不同的实现方式。
  • 多态主要应用于多态参数一个方法中有父类做参数类型,意味着该方法接受任何一个子类对象实参)和多态集合(比如声明一个动物数组,该数组的元素可以接受任何一个子类对象数据)。
  • 如果子类中重写了父类中的一个方法,该方法将会被调用子类中的方法;
                   
               抽象类和抽象方法
                           1.抽象类中,可以定义抽象方法,也可以定义具体方法。
                          2.子类继承抽象类,必须重写所有抽象方法。具体方法不受控制
                          3.抽象方法的意义在于,使用多态变量,可以利用抽象方法进行多态调用。
                          4.抽象父类,可以直接new一个父类数组,实际是生成一个连续空间,具体的数组变量不能new抽象父类。
                          5.抽象方法修饰符不能小于抽象类的缺省修饰符。
如果一个类中的方法,只有定义方法,没有方法具体时间,称为抽象类。拥有抽象方法的类叫抽象类,abstract定义。抽象类不能直接实例化,只能指向子类对象完成实例。

public abstract class Animal{   
     public abstract void eat();这是一个抽象方法
     public void speak(){
         method; 
     }
}
不能有花括号, 括号后面必须有分号。

Animal[] arr= new Animal[3];
           arr[0] = new Dog();
           arr[1] = new Fish();

           for(int i = 0; i< arr.length;i++){       //for循环遍历所有数组的breath方法
                arr[i].breath();
           }
                                                    //for each循环,类型+变量名+:+数组名(已经申明好的数组)
           for(Animal x : arr){
                x.breath();
           }
可以在子类重写方法后 ,用     super.speak();来调用被重写的父类原方法。
class Dog extends Animal{
     public void breath(){
            super.speak();
           System.out.println("");
     }
}

接口
  • 类和类的行为抽象,称为接口
  • 接口的方法只能是抽象方法,接口里的权限不管写不写都是public   ,都是abstract(抽象)。
  • 接口可以看做抽象类的特例。    抽象类(abstract class 比如抽象父类)中可以有抽象方法和属性和具体方法。但接口中只能有抽象方法。定义接口使用interface,实现接口用implement。

package OO0914duotai;

public interface IWash {          //生成接口,不是class,是interface
     public void wash();          //定义抽象方法,洗衣服
}


class Mun implements IWash{      //生成接口类MUn
     @Override
     public void wash() {          //重写接口的方法,洗衣服
           System.out.println("手洗");
     }
}


class Washer implements IWash{
     @Override
     public void wash() {
           System.out.println("发动机搅动");
     }
}

实现
package OO0914duotai;
public class TestWash {
     public static void main(String[] args) {
           // TODO 自动生成的方法存根
            IWash m = new Mun();//只能指向实现类
           IWash w = new Washer();
           m.wash();
           w.wash();
     }
}
如何使用接口
如果一个方法参数为接口类型,意味着,可以传递该接口任何实现类对象。
接口中,可以定义变量,其修饰符是public static final
1.新建一个接口,并产生接口类
package OO0914duotai;
public interface ICatchMouse {
     public void CatchMouse();
}

class knife implements ICatchMouse{
     @Override
     public void CatchMouse() {
           System.out.println("捅死它");
     }
}
2.新建一个使用类,声明一个方法,将接口作为形参传入,并在方法里定义    形参.接口方法
public class Wife {
     public void killMouse(ICatchMouse m){
           m.CatchMouse();
     }
}
3.新建一个测试类,new一个实用类变量,实用类变量.方法( new  接口方法()) 
           Wife w = new Wife();
           w.killMouse();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值