2023/5/29总结

abstract修饰符

抽象类就是当类和类之间有相同特征时,将这些共同的特征提取出来,形成的就是抽象类。

抽象类的特点:

  • 抽象类和抽象方法必须使用abstract 关键字修饰:publicabstract class 类名 / public abstract void eat();
  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
  • 抽象类不能实例化
    那么抽象类如何实例化呢?参照多态的方式,通过子类对象实例化,这叫抽象类多态
  • 抽象类的子类
    要么重写抽象类中的所有抽象方法
    要么是抽象类

例如:

//抽象类Animal,父类
abstract class Animal {
   
}
//抽象类Bird,子类
abstract class Bird extends Animal {

}
//非抽象类:Cat,子类
class Cat extends Animal {
    
}
  •  抽象类就是用来被继承的,子类可以是抽象类,也可以是非抽象类。
  • 非抽象子类继承了抽象父类,必须重写父类的抽象方法,可以有自己的方法,但不能是抽象方法;
  • 抽象子类继承了抽象父类,不需要重写父类的抽象方法,可以有自己的方法,但必须是抽象方法;

抽象类的成员特点:

  • 成员变量:
    可以是变量也可以是常量
  • 构造方法:
    有构造方法,但是不能实例化
    构造方法的作用是用于子类访问父类数据的初始化
  • 成员方法:
    可以有抽象方法:限定子类必须完成某些动作
    也可以有非抽象方法:提高代码复用性

子类调用父类构造方法:

//抽象类Animal,父类
abstract class Animal {
    public Animal() {

    }
}
//抽象类Bird,子类
abstract class Bird extends Animal {
    public Bird() {
        super();
    }
}
//非抽象类:Cat,子类
class Cat extends Animal {
    public Cat() {
        super();
    }


 接口

接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用Java中的接口更多的体现在对行为的抽象

2023/5/29总结_第1张图片

 2023/5/29总结_第2张图片

 2023/5/29总结_第3张图片

 接口与抽象类的代码案例示例:

//Person
package Sport;

public abstract class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

//Sporter
package Sport;

public abstract class Sporter extends Person{

    public Sporter() {
    }

    public Sporter(String name, int age) {
        super(name, age);
    }

    public abstract void study();

}

//Coach
package Sport;

public abstract class Coach extends Person{
    public Coach() {
    }

    public Coach(String name, int age) {
        super(name, age);
    }

    public abstract void teach();
}

//English
package Sport;

public interface English {

    public abstract void SpeakEnglish();

}

//PingPongSporter
package Sport;

public class PingPongCoach extends Coach implements English{
    public PingPongCoach() {
    }

    public PingPongCoach(String name, int age) {
        super(name, age);
    }

    @Override
    public void teach() {
        System.out.println("乒乓球教练交乒乓球");
    }

    @Override
    public void SpeakEnglish() {
        System.out.println("乒乓球教练说英语");

    }
}

//PingPongCoach
package Sport;

public class PingPongCoach extends Coach implements English{
    public PingPongCoach() {
    }

    public PingPongCoach(String name, int age) {
        super(name, age);
    }

    @Override
    public void teach() {
        System.out.println("乒乓球教练交乒乓球");
    }

    @Override
    public void SpeakEnglish() {
        System.out.println("乒乓球教练说英语");

    }
}

//BasketBallCoach
package Sport;

public class BasketBallCoach extends Coach{
    public BasketBallCoach() {
    }

    public BasketBallCoach(String name, int age) {
        super(name, age);
    }

    @Override
    public void teach() {
        System.out.println("篮球教练教篮球");
    }
}

//BasketBallSporter
package Sport;

public class BasketBallSporter extends Sporter{
    public BasketBallSporter() {
    }

    public BasketBallSporter(String name, int age) {
        super(name, age);
    }

    @Override
    public void study() {
        System.out.println("篮球运动员学篮球");
    }
}

//SportDemo
package Sport;

public class SportDemo {
    public static void main(String[] args) {
        PingPongSporter pps=new PingPongSporter("刘星",23);
        System.out.println(pps.getName()+","+pps.getAge());
        pps.study();
        pps.SpeakEnglish();

        BasketBallSporter bbs=new BasketBallSporter();
        bbs.setName("乔丹");
        bbs.setAge(25);
        System.out.println(bbs.getName()+","+bbs.getAge());
        bbs.study();
    }
}


2023/5/29总结_第4张图片 

 

你可能感兴趣的:(java,开发语言)