多态和抽象类&接口

多态

多态是指,同一对象有多种表现形态

-必须要有继承关系
-要有方法重写
-使用父类接受子类对象
   Animal a=new Dog();
//动物类(父类)
public class Animal{
  public void eat(){
  System.out.println("动物吃东西");
 }
}
//狗类(子类)
public class Dog extends Animal {
    //复写eat方法
    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }
}
//测试类
public class Demo1{
public static void mian{
//使用多态的方式,创建Dog对象
Animal a=new Dog();
a.eat();//狗吃骨头
 }
}

多态中成员的访问

- 成员变量访问特点
   如果父类有就执行父类,父类没有就报错。
- 成员方法的访问特点
   有方法复写执行子类的,没有方法复写执行父类的。   

多态的转型

 - 向上转型(多态的写法)
   Animal a=new Dog();


 - 向下转型(强制类型转化)
多态的基础上,把父类类型转化为子类类型。
 Animal a=new Dog();
 Dog d=(Dog)a;
【注意:如果要进行向下转型,最好先用 instanceof 进行判断,避免出现ClassCastExcpetion】

抽象
抽象使用abstract关键字来表示,被它修饰的类叫抽象类,方法叫抽象方法

- 抽象类
1.不能够直接创建对象
 2.一个具体的子类继承抽象类,必须复写所有的抽象方法
 3.如果子类也是抽象类,可以不复写抽象方法
 4.抽象类中可以有抽象方法,也可以有非抽象方法

- 抽象方法
  不能有方法体
  由抽象方法的类必须是抽象类

抽象类设计思想:限制子类的行为
public abstract class Animal {

    //抽象方法
    public abstract void eat();
    public abstract void sleep();
    //非抽象方法
    public void show(){
        System.out.println("show...show..");
    }
}

public class Dog extends Animal {
    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }

    @Override
    public void sleep() {
        System.out.println("狗在狗窝睡");
    }
}

public class Demo3 {
    public static void main(String[] args) {
        Animal d = new Dog();
        d.eat();
        d.sleep();

    }
}

接口

接口可以看做是一套公告的标准规范(通过抽象方法来实现),使用interface定义接口

//定义接口(规范标准)
public interface 接口名{
  //抽象方法
}
//使用接口
public class 类名 implements 接口名{
  //复写所有的抽象方法
}

接口成员特点

- 接口中的成员变量 
其实是一个常量,默认被public static fianal
修饰(可省略)
//在接口中定义常量如下(名称每一个字母全都大写)
  public static final double PI=3.141592653; 

- 接口中的构造方法
  接口中不能有构造方法,因为它不需要创建对象
  
- 接口中的成员方法
  一般都写抽象方法,默认被 public abstract 修饰(可以省略)
   (了解)JDK7以后的版本中,接口中还能写【默认方法、静态方法、私有方法】
   
 **类与类、类与接口、接口与接口
```java
类与类:
  继承关系,但是只能单一继承(一个儿子只能有一个亲爹)
类与接口:
  实现关系,可以多实现(一个儿子可以有多个干爹)
接口与接口:
  继承关系,可以多继承 

**抽象类和接口设计思想的区别

抽象类:抽取子类中共性的行为
接口:为其他类选配一些功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值