Java-多态,抽象类,接口

多态

  • 多态的定义:父类的子类对象。
    比如:猫可以有很多种类 Cat cat=new Cat();
    猫也属于动物 Animal animal=new Cat();

  • 多态的前提
    1.有继承关系
    2.有方法重写
    3.有父类引用指向子类对象 就比如Animal animal=new Cat();

  • 多态中成员访问特点

定义一个Person类和Student类

        Person p = new Student();
        //静态方法:编译看左边,运行看左边
        p.sleep();//父类的静态sleep方法
        //成员方法:编译看左边,运行看右边
        p.eat();//学生类重写的eat方法
        p.play();//学生类重写的play方法
        //p.sleep()和p.hehe()都调不到
        //需要向下转型才可以调用学生类的独有方法和静态方法
        Student student=(Student) p;
        student.sleep();//学生类的sleep静态方法
        student.hehe();//学生类独有的方法

        //成员变量:编译看左边,运行看左边。 p是person类收的 student是student类收的
        int age1 = p.age;
        System.out.println(age1);//70 父类的年龄
        int age2 = student.age;
        System.out.println(age2);//20 子类的年龄
  • 多态的好处:
    1.提高了代码的维护性
    2.提高了代码的扩展性
  • 多态的弊端:
    1.父类的引用对象不能访问子类独有的方法,若要访问,需要向下转型

抽象类

  • 在父类中不给出具体体现,只在父类中给出一个声明,在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。

  • 抽象类中的特点:

    1.抽象类和抽象方法必须用abstract关键字修饰
    抽象类格式:abstract class 类名 {};
    抽象方法格式: public abstract void eat();
    2.抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
    3.抽象类不能实例化,也就是不能直接创建对象,只能用多态的方式间接创建
    4.抽象类的子类要么是抽象类,要么是重写抽象类中的所有抽象方法

  • 抽象类的成员特点

public abstract class Aniaml {
    // 成员变量:抽象类中可以定义成员变量,也可以定义成员常量
    public int age;
    public int NUM = 100;//默认 static final

    // 抽象类中构造方法
    public Aniaml() {
        super();
        // TODO Auto-generated constructor stub
    }

    public Aniaml(int age) {
        this.age = age;
    }

    // 抽象类中可以有抽象方法,也可以有非抽象方法
    // 非抽象方法子类继承
    public void show() {
        System.out.println("非抽象方法");
    }

    // 抽象方法 强制子类做的事情
    public abstract void eat(String name);

}
  • abstract不能和哪些关键字共存?
    1.不能和private共存:private修饰的方法子类不能继承,因为不能重写,而abstract 又要去重写。
    2.不能和 final共存:final 修饰的方法可以继承但是不能重写,abstract 又要去重写
    3.不能和static 共存:静态方法不重写

接口

  • 接口定义:定义一些扩展功能,如果哪个类需要这个功能就实现此接口
  • 接口特点:
    1.接口用关键字interface表示
    格式: interface 接口名 {}
    2.类实现接口用implements表示
    格式:class 类名 implements 接口名 {}
    ps:
    (1)接口不能直接创建对象,只能通过多态的方式创建其对象
    (2)接口可以多实现 一个类可以实现多个接口

  • 接口成员特点:
    (1)成员变量:只能是常量,并且是静态的。
    默认修饰符:public static final
    (2)构造方法:接口没有构造方法。
    (3)成员方法:只能是抽象方法,默认 public abstract

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值