0
点赞
收藏
分享

微信扫一扫

Java基础(7)(多态、抽象类和接口)

泠之屋 2022-01-13 阅读 83

目录

一、多态

二、抽象类

三、接口


一、多态

1. 多态的概述

2. 多态的前提

3. 多态的案例:猫属于猫类,同时也属于动物

 public class Animal {
     int age;
     String name;
     public void sleep(){
         System.out.println("睡觉");
     }
     public void eat(){
         System.out.println("吃饭");
     }
 }
 public class Cat extends Animal {
     @Override
     public void sleep() {
         System.out.println("白天睡觉");
     }
 }
 public class Test {
     public static void main(String[] args) {
         Animal animal=new Cat();
         animal.eat();
         animal.sleep();
     }
 }

4. 多态中的成员访问特点

示例:

 //Animal父类:
 public class Animal {
     String name="父类的成员变量";
     public static void get(){
         System.out.println("父类的静态方法");
     }
 ​
     public Animal() {
         System.out.println("父类的构造方法");
     }
 ​
     public void show(){
         System.out.println("父类的成员方法");
     }
 }
 //Cat子类:
 public class Cat extends Animal {
     String name="子类的成员变量";
     public Cat(){
         System.out.println("子类的构造方法");
     }
     public void show(){
         System.out.println("子类的成员方法");
     }
 }
 //Test测试类:
 public class Test {
     public static void main(String[] args) {
         Animal animal=new Cat();
         System.out.println(animal.name);
         animal.show();
         animal.get();
     }
 }

5. 多态的好处和弊端

好处:

提高了代码的维护性(由继承保证);

提高了代码的扩展性(由多态保证)。

弊端:

不能使用子类特有的功能。

6. 向下转型和向上转型

 public class Test { //向下转型
     public static void main(String[] args) {
         Animal animal = new Cat();
         Cat cat = (Cat) animal;
     }
 }
public class Test { //向上转型
    public static void main(String[] args) {
        Cat cat = new Cat();
        Animal animal = (Animal) cat;
    }
}

二、抽象类

  1. 什么是抽象类

    Java中,一个没有方法体的方法应该定义为抽象方法,如果一个类中有抽象方法,那么这个类必须定义为抽象类。

  2.  抽象类的特点

实例:抽象类不能直接进行实例化,但是其具体的子类可以进行实例化;

//父类
public abstract class Fu {
    public abstract void show();
    public abstract void say();
}
//子类
public class Zi extends Fu{
    public void show(){
        System.out.println("重写的show方法");
    }
    public void say(){
        System.out.println("重写的say方法");
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        Zi zi=new Zi();

    }
}

        3. 抽象类的成员特点

        4. 抽象类猫狗实例

//父类Animal
public abstract class Animal {
    int age;
    String name;
    public abstract void eat();
    public Animal() {
    }
    public  void sleep(){
        System.out.println("睡觉");
    }
}
//子类Cat
public class Cat extends Animal {
    public Cat(int age,String name) {
        this.age=age;
        this.name=name;
    }
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}
//子类Dog
public class Dog extends Animal {
    public Dog(int age, String name) {
        this.age=age;
        this.name=name;
    }
    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }
}
//测试类Test
public class Test {
    public static void main(String[] args) {
        Animal animal=new Cat(5,"mimi");
        Animal animal2=new Dog(3,"qiqi");
        System.out.println(animal.age);
        System.out.println(animal.name);
        System.out.println(animal2.age);
        System.out.println(animal2.name);
        animal.eat();
        animal.sleep();
        animal2.eat();
        animal2.sleep();
    }
}

三、接口

  1. 在Java中,为了体现事物功能的扩展性,提供了接口来定义这些额外功能,并且不给出具体的实现。

  2. 接口的特点

        3. 接口的成员特点

        4.类与类、类与接口、接口与接口的关系

        5.抽象类与接口的区别

抽象类:

接口:

设计理念的区别:

举报

相关推荐

0 条评论