第三章java中的抽象类|
抽象类是声明为抽象的类,可以具有抽象或非抽象方法。抽象类不能被实例化。它可以由子类扩展以实现抽象方法并使用或覆盖具体方法。
java中的抽象方法
抽象方法是没有实现的方法,即它没有任何人。
abstract class Shape{
public abstract double calculateArea(); }
java什么时候需要抽象类?
让我们在示例的帮助下理解它。你有 Shape 类,它有一些方法,如 draw()、calcualteArea() 等。绘制一个形状对于所有形状都是常见的,但每个形状的 calculateArea() 是不同的。
例如:
对于矩形,它将计算为长度 宽度,对于圆形,它将是 pi 半径^2。
因此,对于上述行为,我们将在 shape 类中实现 draw() 方法,并将创建 calcualteArea() 作为抽象方法。因此,如果您有一些常见的行为和一些特定的行为,请将您的类抽象化。
让我们创建一个抽象类作为 Shape 和 Rectangle,Circle 类作为具体类。
java中抽象类的例子:
package org.arpit.java2blog;
abstract class Shape{
public void draw()
{
System.out.println("Draw method in shape class");
}
public abstract double calculateArea();
}
class Rectangle extends Shape
{
double length;
double breadth;
public Rectangle(double length, double breadth) {
super();
this.length = length;
this.breadth = breadth;
}
@Override
public double calculateArea() {
return length*breadth;
}
}
class Circle extends Shape
{
double radius;
public Circle(double radius) {
super();
this.radius = radius;
}
@Override
public double calculateArea() {
return 3.14*radius*radius;
}
}
创建一个名为“AbstractClassMain”的主类
package org.arpit.java2blog;
public class AbstactClassMain {
public static void main(String[] args)
{
System.out.println("============================");
Rectangle rec=new Rectangle(3, 4);
rec.draw();
System.out.println("Area of rectangle is "+rec.calculateArea());
System.out.println("============================");
Circle cir=new Circle(3);
cir.draw();
System.out.println("Area of circle is "+cir.calculateArea());
System.out.println("============================");
}
}
============================
Draw method in shape class
Area of rectangle is 12.0
============================
Draw method in shape class
Area of circle is 28.259999999999998
============================
让我们考虑一些案例来更好地理解java中的抽象类: 案例1:类中可能有零抽象方法,但您仍然可以将类声明为抽象类。 答: 是的,即使类中没有任何抽象方法,也可以将类声明为抽象类。 例如:
abstract class Shape{
public void draw() { System.out.println(“Draw method in shape class”); } }
案例2:类包含抽象方法,但可以不将类声明为抽象吗? 答: 不,必须将类声明为 Abstract,但它包含抽象方法。
class Shape{
public void draw()
{
System.out.println("Draw method in shape class");
}
public abstract double calculateArea();
}
你会得到编译错误:
- 第 1 行:“Shape 类型必须是抽象类才能定义抽象方法”
- 第 7 行:“Shape 类型中的抽象方法 calculateArea 只能由抽象类定义”
如果类中有抽象方法,则类必须在java中声明为抽象类
案例3:可以同时声明class为final和abstract吗?
回答:
不,您不能同时将类声明为最终类和抽象类。Final 意味着没有其他类可以扩展该类,而 Abstract 意味着 Class 必须由任何其他类扩展。
案例4:可以**在java中**实例化抽象类吗?
回答:
不,你不能实例化抽象类。
你不能在java中实例化抽象类
案例5:如果你在java中扩展一个抽象类,你需要实现那个类的所有抽象方法吗?
回答:
是的,你需要实现超类的所有抽象方法,除非子类也是java中的抽象类。
相关文章:
- [其它]第六章JavaFutureTask示例|
- [其它]第六章JavaScheduledThreadPoolExecutor示例|
- [其它]第六章使用Callable和Future的JavaExecutorService示例|
- [其它]第六章JavanewCachedThreadPool示例|
- [其它]第六章JavanewFixedThreadPool示例|
- [其它]第五章在java中使用3个线程打印序列|
- [其它]第五章java中notify和notifyAll的区别|
- [其它]第五章我们可以在java中启动一个线程两次吗|
- [其它]第五章java中的对象级锁定与类级锁定|
- [其它]第五章Java线程连接示例|
相关推荐:
- [其它]第三章java中的抽象类|
- [其它]第四章java中的TreeMap与示例|
- [其它]第四章java中的hashcode()和equals()方法|
- [其它]第六章JavaFutureTask示例|
- [其它]计算机组成原理PDF扫描格式电子版百度云网盘下载
- [其它]程序设计语言概念(第9版)[Robert W. Sebesta]pdf格式电子版百度云网盘下载[53.8M]
- [其它]程序员必读之软件架构[Simon Brown]pdf格式电子版百度云网盘下载[41.6M]
- [其它]程序员的思维修炼 开发认知潜能的九堂课[Andy Hunt]pdf格式电子版百度云网盘下载
- [其它]程序员的职业素养[Robert C. Martin]pdf格式电子版百度云网盘下载[21.6M]
- [其它]程序员教程(第3版)[张淑平]pdf格式电子版百度云网盘下载[136.5M]
- 计算机组成原理PDF扫描格式电子版百度云网盘下载
- 硅谷之谜[吴军]pdf格式电子版百度云网盘下载[59.5M]
- 自选基金助手,一款Chrome扩展程序
- 七周七语言 理解多种编程范型[Bruce A. Tate]pdf格式电子版百度云网盘下载[9M]
- 系统集成项目管理工程师考试考眼分析与样卷解析(2014版)[软考新大纲研究组]
- 程序员面试金典(第5版)[Gayle Laakmann McDowell]pdf格式电子版百度云网盘下载[81.5M]
- 创业维艰 如何完成比难更难的事[Ben Horowitz]pdf格式电子版百度云网盘下载[65.3
- 程序员的思维修炼 开发认知潜能的九堂课[Andy Hunt]pdf格式电子版百度云网盘下载
- 图灵的秘密 他的生平、思想及论文解读[Charles Petzold]pdf格式电子版百度云网盘下
- OCP OCA认证考试指南全册:Oracle Database 11g(1Z0-051、1Z0-052、1Z0-053)[John Watson]pdf格式