|NO.Z.00064|——————————|BigDataEnd|——|Java&多态特殊类.V05|——|Java.v05|抽象方法|抽象类|概念|实际意义|开发经验|
一、抽象方法和抽象类概念
### --- 抽象方法的概念
~~~ ——> 抽象方法主要指不能具体实现的方法并且使用abstract关键字修饰,也就是没有方法体。
~~~ ——> 具体格式如下:
~~~ ——> 访问权限abstract 返回值类型方法名(形参列表);
~~~ ——> public abstract void cry();
二、抽象类的概念
### --- 抽象类的概念
~~~ ——> 抽象类主要指不能具体实例化的类并且使用abstract关键字修饰,也就是不能创建对象。
三、抽象类和抽象方法的关系
### --- 抽象类和抽象方法的关系
~~~ ——> 抽象类中可以有成员变量、构造方法、成员方法;
~~~ ——> 抽象类中可以没有抽象方法,也可以有抽象方法;
~~~ ——> 拥有抽象方法的类必须是抽象类,因此真正意义上的抽象类应该是具有抽象方法并且使用abstract关键字修饰的类。
四、抽象类的实际意义
### --- 抽象类的实际意义
~~~ ——> 抽象类的实际意义不在于创建对象而在于被继承。
~~~ ——> 当一个类继承抽象类后必须重写抽象方法,否则该类也变成抽象类,
~~~ ——> 也就是抽象类对子类具有强制性和规范性,因此叫做模板设计模式。
五、开发经验分享
### --- 开发经验分享
~~~ ——> 在以后的开发中推荐使用多态的格式,
~~~ ——> 此时父类类型引用直接调用的所有方法一定是父类中拥有的方法,若以后更换子类时,
~~~ ——> 只需要将new关键字后面的子类类型修改而其它地方无需改变就可以立即生效,从
~~~ ——> 而提高了代码的可维护性和可扩展型。
~~~ ——> 该方式的缺点就是:父类引用不能直接调用子类独有的方法,
~~~ ——> 若调用则需要强制类型转换。
六、编程代码:声明一个抽象类
package com.yanqi.task09;
public abstract class AbstractTest {
private int cnt;
public AbstractTest() {
}
public AbstractTest(int cnt) {
setCnt(cnt);
}
public int getCnt() {
return cnt;
}
public void setCnt(int cnt) {
this.cnt = cnt;
}
// 自定义抽象方法
public abstract void show();
public static void main(String[] args) {
// 声明该类类型的引用指向该类类型的对象
//AbstractTest at = new AbstractTest();
//System.out.println("at.cnt = " + at.cnt); // 0
}
}
七、编译打印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=53224:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task09.AbstractTest
Process finished with exit code 0
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv002-Java面向对象
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通