java编程abstract类和方法详解
作者:街灯下的小草 发布时间:2023-12-15 06:08:46
标签:java,abstract
抽象类和抽象方法常用知识点:
(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


猜你喜欢
- 自动装配的含义在SpringBoot程序main方法中,添加@SpringBootApplication或者@EnableAutoConfi
- 一、 序列化和反序列化概念Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是
- 本文是精讲RestTemplate第6篇,前篇的blog访问地址如下:RestTemplate在Spring或非Spring环境下使用精讲R
- 本文实例讲述了C#实现AddRange为数组添加多个元素的方法。分享给大家供大家参考。具体实现方法如下:ArrayList ab = new
- 这篇文章主要介绍了spring web.xml指定配置文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 一维数组1.一维数组的定义方式:int[] array1 = new int[3];//声明创建一个包含3个元素的数组array1(初始值为
- @Validated和BindingResult 使用遇到的坑@Validated 与BindingResult 需要相邻,否则 变量res
- 配置注解的支持:在spring4之后,想要使用注解形式,必须得要引入 aop 的包<dependency><groupId
- unity通过GetVector,GetColor,GetFloat等获取。SetVector,SetColor,SetFloat等设置。这
- 废话不多说,直接上代码package com.ietree.basicskill.socket.basic.nio;import java.
- @Resource和@Autowired是Spring Framework中两种常用的注入方式,它们的作用是在Spring容器中自动装配Be
- watch机制Zookeeper watch是一种监听通知机制,可以随时监听一些数据的变化,从而实现数据的及时性。Zookeeper所有的读
- springBoot项目启动多个实例今天碰到一个需求是,将一个服务提供者启动两个实例,一个实例对外,一个实例对内,对内价格有折扣,两个实例通
- 使用 DateFormat 格式化日期、时间DateFormat 也是一个抽象类,它也提供了如下几个类方法用于获取 DateFormat 对
- 如何使用必应地图 WPF 控件框架使用.NET40;Visual Studio 2019;Bing Maps WPF 控件需要&n
- 最近看Android FrameWork层代码,看到了ThreadLocal这个类,有点儿陌生,就翻了各种相关博客一一拜读;自己随后又研究了
- No ‘Access-Control-Allow-Origin‘ header is present
- 目录1、Integer a = 1;2、对于同一类中的两个方法 , 在判断它们是不是重载方法时 , 肯定不考虑( )3、对于Java中异常的
- 这里我先简单描述一下需求:服务器返回的是html页面的一部分带有标签的内容。解决的思路是:将服务器返回的内容片段拼凑成一个完整的页面。下面直
- 应用启动的时候有短暂的白屏,如图:可以通过设置theme的方式来解决 <style name="AppTheme"