java写一个短的抽象类,Java抽象类

用abstract关键字声明的类叫做抽象类在Java中。它可以有抽象的、非抽象方法(方法与body)。

在学习Java抽象类之前,让我们先了解Java的抽象。

在Java中抽象

抽象是一个隐藏实现细节的过程和只显示功能给用户。

另一种方式,它只显示用户必不可少的事情,隐藏了内部细节,例如,发送短信,你输入文本和发送消息。你不知道关于消息传递的内部处理。

抽象可以让你关注什么对象而不是它是如何。

实现抽象方法

有两种方法可以在java实现的抽象

抽象类(0到100�

接口(100�

抽象类在Java中

一个类声明为抽象的被称为一个抽象类。它可以有抽象的、非抽象方法。它需要扩展及其实现方法。它不能被实例化。

要记住

必须声明一个抽象类和抽象的关键字。

它可以有抽象的、非抽象方法。

它不能被实例化。

它还可以有构造函数和静态方法。

它可以有最终的方法将迫使子类不改变身体的方法。

抽象类的例子

abstract class A{}

在Java中抽象方法

一个方法声明为抽象的和没有实现称为一个抽象方法。

抽象方法的例子

abstract void printStatus();//no method body and abstract

抽象类,它有一个抽象方法的例子

在这个例子中,自行车是一个抽象类,它只包含一个抽象方法。其实现是本田所提供的类。

abstract class Bike{

abstract void run();

}

class Honda4 extends Bike{

void run(){System.out.println("running safely");}

public static void main(String args[]){

Bike obj = new Honda4();

obj.run();

}

}

running safely

理解抽象类的真实场景

在这个例子中,形状是抽象类,它的实现是由矩形和圆类提供的。

大多数情况下,我们不知道实现类(隐藏终端用户),和一个对象的实现类是由工厂提供的方法。

工厂方法是一个方法,返回类的实例。稍后我们将了解工厂方法。

在这个例子中,如果你创建一个矩形类的实例,画矩形类的()方法将被调用。

文件:TestAbstraction1.java

abstract class Shape{

abstract void draw();

}

//In real scenario,implementation is provided by others i.e. unknown by end user

class Rectangle extends Shape{

void draw(){System.out.println("drawing rectangle");}

}

class Circle1 extends Shape{

void draw(){System.out.println("drawing circle");}

}

//In real scenario,method is called by programmer or user

class TestAbstraction1{

public static void main(String args[]){

Shape s=new Circle1();//In a real scenario,object is provided through method,e.g.,getShape() method

s.draw();

}

}

drawing circle

抽象类在java的另一个例子

文件:TestBank.java

abstract class Bank{

abstract int getRateOfInterest();

}

class SBI extends Bank{

int getRateOfInterest(){return 7;}

}

class PNB extends Bank{

int getRateOfInterest(){return 8;}

}

class TestBank{

public static void main(String args[]){

Bank b;

b=new SBI();

System.out.println("Rate of Interest is: "+b.getRateOfInterest()+" %");

b=new PNB();

System.out.println("Rate of Interest is: "+b.getRateOfInterest()+" %");

}}

Rate of Interest is: 7 %

Rate of Interest is: 8 %

抽象类的构造函数,数据成员和方法

一个抽象类可以有一个数据成员、抽象方法,方法主体(非抽象方法),构造函数,甚至主要()方法。

文件:TestAbstraction2.java

//Example of an abstract class that has abstract and non-abstract methods

abstract class Bike{

Bike(){System.out.println("bike is created");}

abstract void run();

void changeGear(){System.out.println("gear changed");}

}

//Creating a Child class which inherits Abstract class

class Honda extends Bike{

void run(){System.out.println("running safely..");}

}

//Creating a Test class which calls abstract and non-abstract methods

class TestAbstraction2{

public static void main(String args[]){

Bike obj = new Honda();

obj.run();

obj.changeGear();

}

}

bike is created

running safely..

gear changed

规则:如果有一个抽象方法的类,这个类必须是抽象的。

class Bike12{

abstract void run();

}

compile time error

规则:如果你是扩展一个抽象类,它有一个抽象方法,你必须提供的实现方法或使这类抽象的。

抽象类的另一个真实的场景

抽象类也可以用来提供一些接口的实现。在这种情况下,最终用户可能不是被迫覆盖接口的所有方法。

注意:如果你是java初学者,学习界面,跳过这个例子。

interface A{

void a();

void b();

void c();

void d();

}

abstract class B implements A{

public void c(){System.out.println("I am c");}

}

class M extends B{

public void a(){System.out.println("I am a");}

public void b(){System.out.println("I am b");}

public void d(){System.out.println("I am d");}

}

class Test5{

public static void main(String args[]){

A a=new M();

a.a();

a.b();

a.c();

a.d();

}}

Output:I am a

I am b

I am c

I am d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值