抽象类和接口的应用----常用设计模式总结

抽象类和接口是Java面向对象中最重要的概念,如果说不懂抽象类和接口,那么对于面向对象的理解就是0分。

1,为抽象类和接口实例化

在Java中,可以通过对象的多态性为抽象类和接口实例化,这样
在使用抽象类和接口的时候就可以调用子类所覆写过的方法。

之所以抽象类和接口不能直接实例化是因为其内部包含了抽象方法,
抽象方法都是未实现的方法,无法直接调用。

通过对象多态性可以发现,子类发生了向上转型之后,所调用的全部方法
都是被覆写过的方法。

abstract class A{
      // 定义抽象类A
    public abstract void print() ;  // 定义抽象方法print()
};
class B extends A {
    // 定义子类,继承抽象类
    public void print(){        // 覆写抽象方法
        System.out.println("Hello World!!!") ;
    }
};
public class AbstractCaseDemo01{
   
    public static void main(String args[]){
        A a = new B() ;     // 通过子类为抽象类实例化
        a.print() ;
    }
};

这里写图片描述

interface A{
       // 定义接口A
    void print() ;  // 定义抽象方法print()
};
class B implements A {
     // 定义子类,实现接口
    public void print(){        // 覆写抽象方法
        System.out.println("Hello World!!!") ;
    }
};
public class InterfaceCaseDemo01{
   
    public static void main(String args[]){
        A a = new B() ;     // 通过子类为抽象类实例化
        a.print() ;
    }
};

这里写图片描述

要使用抽象类和接口就得按照这样的使用方式进行(通过子类进行使用),否则是无法进行使用的。

2,抽象类的应用—-定义模板

2-1:场景1,

这里写图片描述

abstract class Person{
    private String name ;       // 定义name属性
    private int age ;           // 定义age属性
    public Person(String name,int age){
        this.name = name ;
        this.age = age ;
    }
    public String getName(){
        return this.name ;
    }
    public int getAge(){
        return this.age ;
    }
    public void say(){      // 人说话是一个具体的功能
        System.out.println(this.getContent()) ; // 输出内容
    }
    public abstract String getContent() ;   // 说话的内容由子类决定
};
class Student extends Person{
    private float score ;
    public Student(String name,int age,float score){
        super(name,age) ;   // 调用父类中的构造方法
        this.score = score ;
    }
    public String getContent(){
        return  "学生信息 --> 姓名:" + super.getName() + 
                ";年龄:" + super.getAge() + 
                ";成绩:" + this.score ;
    }
};
class Worker extends Person{
    private float salary ;
    public Worker(String name,int age,float salary){
        super(name,age) ;   // 调用父类中的构造方法
        this.salary = salary ;
    }
    public String getContent(){
        return  "工人信息 --> 姓名:" + super.getName() + 
    
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值