1. 什么是抽象方法
1. 只有方法的声明,没有方法体;
2. 使用 abstract 关键字进行修饰。
public abstract class ClassA{
//下面声明一个抽象方法
public abstract void sayHello();
}
2.什么是抽象类
使用 abstract 关键字进行修饰的类就是抽象类。
/**
* 下面就定义了一个抽象类:使用abstract关键字修饰一下
*/
public abstract class ClassB {
}
3.抽象类的特点
// 1-3 点是普通的特征
1. 类的定义必须有 abstract 修饰符修饰;
2. 抽象类的属性 与普通类的属性完全一样,可以用 public、protected、(default)、private 修饰符进行修饰;
3. 抽象类的属性 同样可以用 static 进行修饰;
4. 抽象类的方法 与普通类的方法完全一样,可以用 public、protected、(default)、private 修饰符进行修饰;
5. 抽象类的方法 同样可以用static 进行修饰;
// 后面的几点特点是比较特殊的
6. 一旦类中声明了 抽象方法,则该类必须声明为抽象类!
7. 根据6中的描述,抽象类中不一定存在抽象方法;
8. 子类一旦继承了抽象类,则必须重写父类的抽象方法 或者 将自己也声明为抽象类;
9. 抽象类可以有构造器,但这个构造器只能被子类调用;
10.抽象类不可以实例化对象,即,不可以使用 new 来创建对象;
4.代码实例
4.1 定义一个抽象类
package com.kuangu.project.statisticreport.domain;
/**
* @Classname ClassB
* @Description TODO
* @Date 2021/7/15 16:57
* @Created by NorthCastle
*/
public abstract class ClassB {
// 1.与普通类相同的声明属性的方式
public String nameA;
protected String nameB;
String nameC;
private String nameD;
public static String nameE;
// 2.与普通类相同的声明方法的方式
public String sayHelloWorld(){
return "Hello World!";
}
protected String sayHelloJava(){
return "Hello Java!";
}
String sayHelloSpring(){
return "Hello Spring!";
}
private String sayHelloSpringBoot(){
return "Hello SpringBoot!";
}
public static String sayHello(){
return "Hello";
}
// 3.声明抽象方法
public abstract String sayHelloJDBC();
// 4.构造方法
public ClassB(){
System.out.println("ClassB constructor");
this.nameA = "ClassB nameA";
this.nameB = "ClassB nameB";
this.nameC = "ClassB nameC";
this.nameD = "ClassB nameD";
this.nameE = "ClassB nameE";
}
}
4.2 特点8的示例
package com.kuangu.project.statisticreport.domain;
/**
* @Classname ClassBson
* @Description TODO
* @Date 2021/7/15 17:44
* @Created by Northcastle
*/
public class ClassBson extends ClassB {
}

4.3 特点9,10的示例
package com.kuangu.project.statisticreport.domain;
/**
* @Classname ClassBson2
* @Description TODO
* @Date 2021/7/15 17:45
* @Created by NorthCastle
*/
public class ClassBson2 extends ClassB {
private String nameA;
/**
* 构造方法 : 调用父类的构造方法
*
*/
public ClassBson2(){
super(); // 调用父类的构造器
System.out.println(super.nameA);
this.nameA = "sonNameA";
System.out.println(this.nameA);
}
/**
* 实现抽象父类中的方法
* @return
*/
@Override
public String sayHelloJDBC() {
super.sayHelloJava();
return "Hello JDBC son";
}
}

5.抽象类的作用
模板作用!
【具体的含义及使用在后续中进行更新】
6.完成
Congratulations!
You are one step closer to success!
本文详细介绍了Java中的抽象类和抽象方法,包括它们的定义、特点和使用示例。抽象类通过abstract关键字标识,可以包含静态属性和方法,但至少有一个抽象方法。子类继承抽象类必须实现其抽象方法,除非子类也是抽象类。同时,抽象类不能实例化,主要用于作为模板。示例代码展示了抽象类的声明、构造器、抽象方法的实现以及子类的继承和方法重写。
1万+

被折叠的 条评论
为什么被折叠?



