JAVA(1.28)多态、抽象类、接口

多态的内存分析:
栈(自动分配连续的空间,后进先出)放置:局部变量
堆(不连续)堆:放置new出的对象
方法区(也是堆)存放:类的代码信息、static变量、常量池
HttpServlet对象:
service(this, super)
doGet(this, super)
MyServlet对象:
doGet(this, super)(里边的this指的是整个对象)

抽象类:包含了抽象方法的类
抽象方法:只有方法的声明,没有方法体
有抽象方法的类只能定义为能抽象的类
抽象类不能实例化,及不能用new来实例化抽象类
抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。
抽象类只能用来继承
抽象方法必须被子类实现

package cn.mjc.oo.polymorphism.myServlet;

public class Test {
    public static void main(String[] args) {
        HttpServlet s = new MyServlet();
        s.service();
        s.doGet();
    }
}

 

接口(设计跟实现的分离):
本质是契约
比抽象类还要抽象的类
接口中只有:常量、抽象方法
public static final 接口中常量定义时,写或不写都是这样
public abstract 接口中方法定义时,写或不写都是这样
一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的
接口可以多继承

package cn.mjc.oo.testInterface;

public interface Flyable {
    int MAX_SPEED = 11000;
    int MIN_HEIGHT = 1;
    void fly();
}

interface Attack{
    void attack();
}

class Plane implements Flyable{
    @Override
    public void fly() {
        System.out.println("飞机依靠发动机在飞");
    }
}

class Man implements Flyable{
    @Override
    public void fly() {
        System.out.println("跳起来,飞!");
    }
}

class Stone implements Flyable, Attack{
    @Override
    public void fly() {
        System.out.println("被人扔出去");
    }

    @Override
    public void attack() {
        System.out.println("砸人");
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值