继承,多态,抽象类,接口

 

进化表

继承---->多态---->抽象类---->接口

继承关键字:extends

子类将会继承父类所有的功能

例如:

class Person{

    private String name;

    private int age;

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }

    public int getAge(){
        return age;
    }

    public void setAge(int name){
        this.age = age;
    }
    
}

class Student extends Person{
 //Student 继承了 Person,有Person所有的功能
}

class Test{
    public static void main(String[] args){
        Student stu = new Student();
        stu.setAge(18);
        System.out.print(stu.getAge());
    }
}

在java中 没有写extends ,编译器会自动加上 extends Object  .

任何类 都会继承Object类,也就是说Object类 是所有类的父类

 

向上转型:

Person p = new Student();

因为Student继承自Person ,具有Person所有的功能,所以这种方式是可以的

向下转型

Person p = new Student();

Student s = (Student)p;

 

向下转型有可能会失败,例如:

Person person = new Person();

Student s = (Student)person;

失败JVM会报ClassCastException

 

多态:

在继承的基础上

多态是指针对某个类型方法的调用,其真正执行的方法取决于运行时期实际类型的方法

 

抽象类:

由于父类的方法没有实际意义,可以去掉方法的执行语句

abstract class Person{

    public  abstract void run();

}

如果一个class定义了方法,但是没有具体的执行代码,这个方法就是抽象方法,用abstarct修饰

用abstarct修饰的类 就是抽象类

抽象类无法实例化

那不能被实例化的抽象类有什么用呢?

因为抽象类被设计成只能用于继承,可以强迫子类实现其定义的抽象方法,起到一定的“规范”作用

例如:

抽象类Person定义了run方法,那么其子类Student就必须override run方法;

面向抽象编程的本质:

上层代码只定义规范

不需要子类就可以实现业务逻辑

具体的业务逻辑由不同的子类实现,调用者并不关心;

 

 

接口:

接口就是抽象类的进化 版

如果一个抽象类没有字段,所有的方法都是抽象方法,那就可以把这个抽象类改为接口

抽象类:

abstract class Person{

    public abstract void run();

    public abstract String getName();

}

接口:

Interface Person{

    void run();

    String getName();

}

一个类只能继承另一个类,但是可以实现多个接口

接口也可以继承接口,相当与扩展了接口的方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值