抽象类

文章目录

1.理解抽象

  • 抽象的反义词:具体
  • 抽象类本身就是用来表示一个不太具体的概念
  • 抽象方法就更不具体,里面没有实质的实现。
  • Java种使用abstract关键字来表示抽象类和抽象方法。
  • abstract关键字存在的意义,就是让程序员明确的告诉编译器,这个类就是一个抽象的类,不应该进行实例化,于是编译器就要做好相关的检查。
  • 像这种不需要实例化必要的类,就可以把这个类作为抽象类。
  • 像这种本身没有方法体,只是为了能被子类重写的方法,就可以把这个方法做成一个“抽象方法”。
  • 给这个类前面加上abstract此时这就是一个抽象类了。
  • 如果尝试创建抽象类的实例,就会编译报错。
  • 给方法前面加上abstract,此时这就是一个抽象方法了
  • 抽象方法不需要方法体
  • 抽象方法只能在抽象类中存在(也可以在接口存在),不能在普通的类中存在。
  • 抽象方法存在的意义就是为了让子类进行重写。
  • 抽象方法的修饰不能是private
  • 抽象类的除了不能实例化之外,其他的语法规则都和普通的类一样。
  • 抽象类中可以有普通的属性和方法。
  • 抽象类也可以有静态的属性和方法。
  • 抽象类也可以继承其他的类,也可以被其他的类继承。
Shape 类
//给这个类前面加上abstract此时这就是一个抽象类了
//如果尝试创建抽象类的实例,就会编译报错
//抽象类的除了不能实例化之外,其他的语法规则都和普通的类一样。
//1.抽象类中可以有普通的属性和方法。
//2.抽象类也可以有静态的属性和方法。
 abstract public class Shape {
     public int n = 10;
     public void func(){

     }
    //给方法前面加上abstract,此时这就是一个抽象方法了
    //抽象方法不需要方法体
    //抽象方法只能在抽象类中存在(也可以在接口存在),不能在普通的类中存在
    //抽象方法存在的意义就是为了让子类进行重写。
    abstract public void draw();
}
//Rect类
public class Rect extends Shape {
    @Override
    public void draw(){
        System.out.println("□");
    }
}

//Circle类
public class Circle extends Shape {
    @Override
    public void draw(){
        System.out.println("⚪");
    }
}

//Main 
public class Main {
    public static void main(String[] args) {

        //Shape本身虽然也有draw方法,此时发现draw方法没有实质d额内容,
        //存在的意义让其他子类重写
        //shape本身也不需要去创建实例,Shape存在的目的创建Shape的子类
        //搭配多态来使用
        //像这种不需要实例化必要的类,就可以把这个类作为抽象类
        //像这种本身没有方法体,只是为了能被子类重写的方法
        //就可以把这个方法做成一个“抽象方法”
        Shape shape1 = new Circle();
        Shape shape2 = new Rect();
        //编译器会直接报错
//        Shape shape3 = new Shape();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值