Java抽象类的相关说明
Java抽象类的相关说明
在java代码中,abstract
关键字修饰类可使类,我们将这种类称之为“抽象类”
Java中的抽象
抽象的功能:隐藏实现细节只向用户显示功能的过程
抽象类只关注:对象的功能,而不关注如何做。
实现抽象的方法
在java中有两种实现抽象的方法,它们分别是:
- 抽象类(部分)
- 接口 (完全)
1. Java中的抽象类
我们将运用abstract
关键字声明的类称之为抽象类。
抽象类需要扩展和实现它的方法,抽象类不能被实例化
抽象类的例子
abstract class testClass{}
抽象方法
一个被声明为 abstract
而没有实现的方法称为抽象方法。
abstract void printInfo();//无方法的实现内容
例:抽象对象及抽象方法的定义
abstract class abs_Class {
abstract void printInfo();
}
class testClass extends abs_Class {
void printInfo() {// printInfo 方法的实现
System.out.println("print...");
}
public static void main(String args[]) {
abs_Class obj = new testClass();
obj.printInfo();
}
}
-----运行以上代码,将输出以下信息-----
print...
抽象类的应用场景
例:
定义一个抽象类Shape
采用抽象类Shape实现Rectangle
和Circle
类
例:
abstract class Shape {
abstract void draw();
}
class Rectangle extends Shape {
void draw() {
System.out.println("drawing rectangle");
}
}
class Circle1 extends Shape {
void draw() {
System.out.println("drawing circle");
}
}
class TestAbstraction1 {
public static void main(String args[]) {
Shape s = new Circle1();// In real scenario, object is provided through
// method e.g. getShape() method
s.draw();
}
}
------运行以上代码,将输出以下信息-----
drawing circle
例:java中抽象类
abstract class abs_testClass{
abstract int testFun();
}
class A extends abs_testClass{
int testFun() {
return 888;
}
}
class B extends abs_testClass{
int testFun() {
return 999;
}
}
class TestBank {
public static void main(String args[]) {
abs_testClass t;
t = new A();
System.out.println(b.testFun());
t = new B();
System.out.println(b.testFun());
}
}
-----运行以上代码,输出以下信息-----888
999
拥有构造函数,数据成员,方法等的抽象类
抽象类可以有数据成员,抽象方法,方法体,构造函数甚至main()
方法
例:
abstract class abs_testClass{
abs_testClass() {
System.out.println("abs_testClass is created");
}
abstract void printInfo();
void ttt() {
System.out.println("printInfo");
}
}
class A extends abs_testClass{
void printInfo() {
System.out.println("printInfo2");
}
}
class testClass {
public static void main(String args[]) {
abs_testClass obj = new A();
obj.printInfo();
obj.ttt();
}
}
注意事项:
当一个类中拥有抽象方法时,则类必须声明为抽象
例:
class testClass{
abstract void printInfo();
}
以上代码,会编译失败 版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。