细谈抽象类

简介: 抽象类1.抽象类是被abstract修饰的类2.抽象类中的抽象方法3.抽象类中可以有和普通类一样的成员变量和成员方法 4.抽象类不能被实例化5.那么抽象类不能被实例化要它有何用???

目录


抽象类


1.抽象类是被abstract修饰的类


2.抽象类中的抽象方法


3.抽象类中可以有和普通类一样的成员变量和成员方法


4.抽象类不能被实例化


5.那么抽象类不能被实例化要它有何用???


6.注意:


抽象类

如果一个类中没有包含足够信息来描述一个具体的对象,这样的类就是抽象类


1.抽象类是被abstract修饰的类

(这里我们定义一个图形的抽象类)

abstract class Shape {
}

2.抽象类中的抽象方法

在抽象类中被abstract修饰的方法称为抽象方法,该方法可以没有具体的实现

abstract class Shape {
    public abstract void draw();
}

当一个类中含有抽象方法的时候,该类必须被abstract修饰


3.抽象类中可以有和普通类一样的成员变量和成员方法

d5a71b7ebc805b5652066a13bb42de86_51259c0f3ffc451ab2a78433db938830.png


4.抽象类不能被实例化

(这里为了方便观察放到一个类里来看)

2c6ecd7d0fee70285b90767f2ed4acd6_71ed12104d784572bae44f68c64d9567.png


5.那么抽象类不能被实例化要它有何用???

就是为了被继承!!!

这里我们写一个rect(矩形)类继承Shape(图形)类

bc611f3612a967aa8ccf21a053c49f8f_2110f5881f5742969f8c0b23054e8903.png

这里为什么会显示错误呢???

当一个普通的类继承抽象类之后,必须要重写抽象类当中使用的抽象方法

ed026a6ccda850f58b9c1af65e099b06_b62ae647915841ac817f1e48d1458c4b.png


所以在这里我们就能这样实例化和进行向上转型!

public class Test {
    public static void drawMap(Shape shape) {
        shape.draw();
    }
    public static void main(String[] args) {
        Shape shape = new rect();
        drawMap(shape);
    }
}

7ac0fbb30c5949eba51653dc340c36a2_7a3b3a49f4684e9babcedc50626047e5.png

6.注意:

抽象方法不能被final,static,private修饰

final和abstract不能能同时存在的


目录
相关文章
|
设计模式 算法 Java
JAVA设计模式13:模版方法模式,将一些步骤延迟到子类中实现
JAVA设计模式13:模版方法模式,将一些步骤延迟到子类中实现
|
Java 编译器 C++
【C++从0到王者】第二十二站:一文讲透多继承与菱形继承(下)
【C++从0到王者】第二十二站:一文讲透多继承与菱形继承(上)
67 1
|
存储 编译器 C++
【C++从0到王者】第二十二站:一文讲透多继承与菱形继承(上)
【C++从0到王者】第二十二站:一文讲透多继承与菱形继承
60 1
|
设计模式
26【软件基础】简单计算器的实现+工厂方法模式应用+封装、继承、多态的体现
工厂方法模式是一种常用的`创建型设计模式`,它提供了一种将对象的创建过程封装起来的方法。在工厂方法模式中,将对象的创建过程交给一个`工厂类`来完成,而不是在代码中直接调用构造函数来创建对象。这样可以使得代码更加灵活,`降低耦合度`,方便后期维护和扩展。
175 0
|
存储 安全 编译器
【巧妙继承】C++玩转继承的神级技巧
【巧妙继承】C++玩转继承的神级技巧
|
设计模式 消息中间件 Java
【Java设计模式 面向对象设计思想】三 再谈抽象类和接口
【Java设计模式 面向对象设计思想】三 再谈抽象类和接口
171 0
|
设计模式 存储 安全
【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性
【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性
99 0
|
设计模式 Java
抽象类随记
当父类的某些方法不能确定时,定义为抽象方法;用abstract修饰 被abstract修饰的方法叫抽象方法,被abstract修饰的类叫抽象类;
64 0
|
设计模式 Java iOS开发
Java设计模式之三:适配器模式
1、当我们想要使用一个已经存在的接口,但是它不符合现有的接口数据规范,导致无法直接去访问,此时我们可以创建一个适配器就能间接去访问这个类中的方法; 2、不同系统间进行业务数据对接时,如果想要像调用自身系统接口一样使用其他系统的接口,我们需要通过适配器进行一层转换;
Java设计模式之三:适配器模式