java编程abstract类和方法详解

作者:街灯下的小草 时间:2023-12-15 06:08:46 

抽象类和抽象方法常用知识点:

(1)抽象类作为被继承类,子类必须实现抽象类中的所有抽象方法,除非子类也为抽象类。

也就是说,如果子类也为抽象类,可以不实现父类中的抽象方法。但是,如果有一个非抽象类

继承于抽象子类,需要实现抽象子类,抽象子类的抽象父类的所有抽象方法,新帐旧账一起算。

(2)抽象类不能用final进行修饰。

(3)抽象类不能被实例化,也就是说你用的时候不能通过new关键字创建。

(4)抽象类中可以包含抽象方法和非抽象方法,抽象方法没有方法体,也就是没有具体实现,

只是定义了有什么功能,但是非抽象方法含有方法体。

eg:

抽象父类Person:


package com.lanhuigu.java;
/**
* 抽象类:不能用final修饰,
* 可以包含抽象方法和非抽象方法,
* 抽象方法没有方法体,只是定义功能,没有实现;
* 非抽象方法为正常的方法。
*/
public abstract class Person {
/*
  * abstract methods
  */
public abstract String eat();
public abstract String sleep();
/*
  * non-abstract methods
  */
public String sport() {
return "生命在于运动";
}
}

非抽象子类Teacher:


package com.lanhuigu.java;
/**
* 继承于抽象类person,必须实现父类中的所有抽象方法
*/
public class Teacher extends Person {
@Override
 public String eat() {
// TODO Auto-generated method stub
return "老师吃饭";
}
@Override
 public String sleep() {
// TODO Auto-generated method stub
return "老师睡觉";
}
}

非抽象子类Student:


package com.lanhuigu.java;
/**
* 继承于抽象类person,必须实现父类中的所有抽象方法
*/
public class Student extends Person {
@Override
 public String eat() {
// TODO Auto-generated method stub
return "学生吃饭";
}
@Override
 public String sleep() {
// TODO Auto-generated method stub
return "学生睡觉";
}
}

抽象子类OthersPerson:


package com.lanhuigu.java;
/**
* 抽象类继承自抽象类,可以不用实现其父类的抽象方法
*/
public abstract class OthersPerson extends Person {
 public abstract String call();
}

非抽象子类ExtendsOthersPerson继承于抽象子类OthersPerson:


package com.lanhuigu.java;
/**
* 必须实现抽象父类OthersPerson,以及OthersPerson父类Person中
* 的所有抽象方法,新帐旧账一起算。
*/
public class ExtendsOthersPerson extends OthersPerson {
@Override
 public String sleep() {
// TODO Auto-generated method stub
return "睡觉";
}
@Override
 public String eat() {
// TODO Auto-generated method stub
return "吃饭";
}
@Override
 public String call() {
// TODO Auto-generated method stub
return "打电话";
}
}

测试代码:


package com.lanhuigu.java;
public class TestAbstract {
public static void main(String[] args) {
Teacher teacher = new Teacher();
Student student = new Student();
//OthersPerson othersPerson = new OthersPerson();//报错,抽象类不能被实例化
System.out.println(teacher.eat());
System.out.println(teacher.sleep());
System.out.println(teacher.sport());
// 继承父类非抽象方法
System.out.println("==============");
System.out.println(student.eat());
System.out.println(student.sleep());
System.out.println(student.sport());
// 继承父类非抽象方法
}
}

控制台输出:

老师吃饭
老师睡觉
生命在于运动
==============
学生吃饭
学生睡觉
生命在于运动

总结

java中staticclass静态类详解

Java压缩文件工具类ZipUtil使用方法代码示例

Java编程关于子类重写父类方法问题的理解

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

来源:http://blog.csdn.net/yhl_jxy/article/details/53258801

标签:java,abstract
0
投稿

猜你喜欢

  • Android仿微信图片选择器ImageSelector使用详解

    2023-04-08 22:28:02
  • Java Volatile关键字你真的了解吗

    2023-08-09 20:28:23
  • vs 中C#项目读取JSON配置文件的方法

    2022-09-22 15:04:05
  • SpringBoot集成yitter-idgenerator(雪花漂移)分布式Id自增的实现

    2022-03-27 10:47:08
  • C# partial关键字说明

    2021-12-29 15:29:54
  • Android日期选择器实现年月日三级联动

    2022-12-13 03:35:59
  • android安装后启动出错解决

    2021-10-31 12:13:26
  • idea打包java程序(包含依赖的所有jar包)

    2023-02-13 00:10:26
  • Android 微信摇一摇功能实现详细介绍

    2023-06-21 21:00:09
  • Java详解实现多线程的四种方式总结

    2023-04-04 19:43:34
  • Kotlin协程之Flow基础原理示例解析

    2021-10-17 21:07:44
  • Android 仿微信自定义数字键盘的实现代码

    2021-10-06 06:58:54
  • Mybatis之association和collection用法

    2021-10-13 10:09:10
  • Java实现计算器设计

    2023-08-18 13:36:54
  • springboot快速整合Mybatis组件的方法(推荐)

    2022-03-23 11:59:15
  • 老生常谈Java 网络编程 —— Socket 详解

    2023-07-12 16:32:54
  • 如何实现Spring Event(异步事件)

    2023-08-23 05:06:47
  • spring-boot整合ehcache实现缓存机制的方法

    2023-06-18 20:05:10
  • C#语音识别用法实例

    2021-09-11 01:16:47
  • springboot配置加密的正确姿势分享

    2023-10-03 03:44:29
  • asp之家 软件编程 m.aspxhome.com