一、什么是抽象类和抽象方法

没有具体功能的实现,通过子类继承后重写方法来实现一定约束的类称之为抽象类,抽象类必须被abstract修饰。抽象方法就是只有方法声明,没有方法体的方法。抽象类的使用一般通过继承来实现

二、为什么需要抽象类和抽象方法

引用抽象方法和抽象类,是java提供的一种语法工具,引导使用者正确的使用它们,减少误用。相当于对子类进行一定限制。

三、抽象类和抽象方法的语法规则及其注意事项

抽象类抽象方法必须被abstract修饰。

抽象类中可以有普通方法,但是有抽象方法的类必须是抽象类。抽象类中的普通方法因为不能被创建对象,所以不能使用这个普通方法。

抽象类除了不能实例化对象之外,类的其它功能依然存在。

抽象方法中可以有被static修饰main方法,并且可以执行。

一个类在继承抽象类后,必须实现抽象类中定义的所有抽象方法。除非它自己也声明为抽象类。

抽象方法名后面直接跟一个分号,而不是花括号。

四、抽象类和抽象方法的实现案例

1、抽象类中可以有普通方法,但是有抽象方法的类必须是抽象类。

public abstract class Demo01 {

public abstract void run();

public void test(){}

}

//编译通过,不报错

public class Demo01 {

public abstract void run();

public void test(){}

}

//报错:

Class 'Demo01' must either be declared abstract or implement abstract method 'run()' in 'Demo01'

Abstract method in non-abstract class

2、抽象类除了不能实例化对象

public abstract class Demo01 {

public abstract void run();

public static void main(String[] args) {

Demo01 demo01=new Demo01();

}

}

3、抽象方法中可以有被static修饰main方法,并且可以执行。

public abstract class Demo01 {

public abstract void run();

public static void main(String[] args) {

System.out.println("抽象类中的main方法");

}

}

//输出结果:抽象类中的main方法

4、抽象类的使用一般通继承来实现,且子类中要么对抽象类的方法进行重写,要么声明子类也为抽象类

public class Demo02 extends Demo01{

@Override

public void run() {

}

}

abstract class Demo03 extends Demo01{

}

//Demo02和Demo3均能编译通过。

5、抽象类中的静态方法可以用类名.方法名的方式调用

6、抽象的实例:

有抽象类Father,和抽象方法run()。

public abstract class Father {

private String name;

private int age;

private char sex='男';

public int money=100_000;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public char getSex() {

return sex;

}

public void setSex(char sex) {

this.sex = sex;

}

abstract void run();

public void say(){

System.out.println("这是父类普通方法");

}

public static void go(){

System.out.println("这是父类静态方法");

}

}

有子类Son继承了抽象类,重写了父类的抽象方法run

public class Son extends Father{

private double salary;

@Override

void run() {

System.out.println("子类重写了父类的方法run");

System.out.println(super.getSex());

super.say();

}

public static void main(String[] args) {

Son son=new Son();

son.run();

System.out.println(son.getSex());

//System.out.println(super.getSex()); //错误

son.setAge(47);

System.out.println(son.getAge());

son.setName("ThreePure");

System.out.println(son.getName());

//调用父类的公有属性

System.out.println(son.money);

//使用继承于父类的方法

son.say();

}

}

运行结果:

子类重写了父类的方法run

这是父类普通方法

47

ThreePure

100000

这是父类普通方法

尽管我们不能实例化一个 Father类的对象,但是如果我们实例化一个 Son 类对象,该对象将从 Father 类继承 成员方法,且通过该方法可以设置或获取成员变量。

五、抽象类的其他补充吗

抽象类是否有构造器:

从图中我们可以知道抽象类也是有构造器的,并别在子类创建对象时被调用。

public abstract class Demo3 {

public Demo3() {

System.out.println("抽象类的构造方法");

}

}

public class Demo4 extends Demo3{

public static void main(String[] args) {

Demo4 demo4 =new Demo4();

}

}

//抽象类的构造方法

2、final与abstract的矛盾

final关键字可以修饰类、方法、变量。final修饰的类不能被派生;final修饰的方法,禁止子类重写。所以我们可以看出,final和abstract不能一起使用。

3、构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

什么是抽象方法 java_java抽象类和抽象方法相关推荐

  1. 十一、接口(接口的概念,实现,继承,实现)、抽象类与抽象方法(抽象类,抽象方法概念,使用)...

    接口 接口是一种用来定义程序的协议,它描述可属于任何类和结构的一组相关行为. 接口可由方法.属性.事件和索引器这四种成员类型的任何组合构成,但不能包含字段. 接口通过类继承来实现,一个类虽然只能继承一 ...

  2. java中 继承、重写、抽象类、抽象方法、多态的学习

    0.复习: 0.1 静态: ​ 1.静态成员变量:作为数据 被所有对象共享 属于类的 ​ 2.静态成员方法:工具 ​ 3.静态代码块: 初始化数据 0.2 工具类: ​ 1.Arrays: ​ 1.1 ...

  3. day10:抽象方法、抽象类、接口、类与接口、接口与接口、内部类

    一 回顾 1.继承中访问成员方法的特点:重名:优先访问子类 不重名:优先方法子类 没有则向上查找方法重载: 同一一个类 方法名相同 参数不同 与返回值类型无关方法重写: 在继承中 方法名相同 参数相同 ...

  4. 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...

  5. java抽象类与抽象方法详解+练习题

    抽象类与抽象方法 一.为什么使用抽象方法和抽象类 二.抽象方法 抽象方法指一些只有方法声明,而没有具体方法体的方法. 结构 abstract class 类名称 // 定义抽象类 {声明数据成员;访问 ...

  6. JAVA基础13-Java抽象方法、抽象类、抽象之模板方法模式

    文章目录 Java抽象方法和抽象类 抽象之模板方法模式 Java抽象方法和抽象类 抽象类: Java中可以定义没有方法体的方法,该方法由子类来具体实现.这个没有方法体的方法我们称之为抽象方法,含有抽象 ...

  7. java中的抽象类和抽象方法

    知识点:java中的抽象类和抽象方法 关键字abstract意为抽象的,可以用来修饰类和方法,分别称作抽象类和抽象方法 抽象类一般在多态的场景中使用 一:抽象类(abstract class) 在类的 ...

  8. 【Kotlin】抽象类 ( 声明 | 抽象类成员 | 抽象类继承 | 抽象方法覆盖 | 抽象方法实现 )

    文章目录 I . 抽象类总结 II . 抽象类声明 III . 抽象类中的 ( 正常 / 抽象 ) 的 ( 成员 / 方法 ) IV . 抽象类继承 V . 抽象方法的覆盖 VI . 抽象方法的实现 ...

  9. PHP面向对象(OOP):抽象方法和抽象类(abstract)

    在OOP语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法做为外部代码访问其的接口.而抽象方法就是为了方便继承而引入的,我们先来看一下抽象类和抽象方法的定义再说明它的用途. 什么是抽象方 ...

最新文章

  1. CV08-数据预处理与数据增强
  2. 俄通信监管机构回应封锁微信: 收到资料核验后将解除封锁
  3. 记一次金士顿DT100 G3 32G修复
  4. CTF Geek Challenge——第十一届极客大挑战Misc Write Up
  5. 企业邮箱服务器删除邮件,企业邮箱Webmail对邮件进行删除或者清空邮件的方法...
  6. php mysql 取最小值_php – 根据另一个值更新最小值 – MySql
  7. 64位CentOS6.2安装erlang及rabbitmqServer
  8. java jdbc连接db2数据库_Java连接db2数据库(常用数据库连接五)
  9. FTP判断ftp上是否有文件目录,没有就创建的具体案例
  10. 超详细的CMD文件讲解(DSP28035)
  11. Scrapy爬虫代理IP的使用
  12. 新年贺卡用python_Photoshop 一张简洁的新年贺卡制作方法
  13. matlab中的级数怎默算_matlab相关系数计算公式(Pearson和Spearman,以及Kendall Rank)...
  14. MOOS-ivp简介
  15. egret 龙骨操作,返回龙骨显示对象
  16. 2022-2028年中国质量检验检测行业市场全景调查及投资潜力研究报告
  17. 蚁剑有时候连不上webshell
  18. IDEA查看maven依赖关系的方法
  19. 【晴神宝典刷题路】codeup+pat 题解索引(更新ing
  20. spring+JdbcTemplate简单使用(一)

热门文章

  1. 职场新境之“甩手组”
  2. Python新手的数据批量处理教程(TXT文件)
  3. 海外有哪些免费的0元虚拟主机(免费空间或者免费虚拟主机)
  4. 半加器 全加器 Verilog描述
  5. Hadoop之图解MapReduce与WordCount示例分析
  6. Vi编辑异常退出解决
  7. chat--hxxdfd
  8. html语义化标签和无语义化标签
  9. C++之友元:是朋友(friend)也是破坏者
  10. 华为推送 坑点 自定义intent