java abstract类_java编程abstract类和方法详解

news/2025/2/26 13:41:34

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

(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编程abstract类和方法详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

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


http://www.niftyadmin.cn/n/3142249.html

相关文章

[題解](縮點)luogu_P2341受歡迎的牛

對於每個強聯通分量,這些牛一定都互相喜歡,所以縮點(我也不知道怎麼想到的) 接下來就是統計答案,最後縮成了一個DAG圖,如果這個點是明星的話,其他每個點一定直接或間接的鏈接這個點 也就是說其他…

Linux赋予权限

chmod ar *转载于:https://www.cnblogs.com/tiechui2015/p/10732220.html

java程序员面试时候经常会问的一些问题_面试JAVA程序员常遇到的一些问题了解一下...

每当我们去面试的时候,面试官总会问我们一大堆问题,而回答问题都是有技巧,回答问题的时候不能过于老实,全盘脱出,稍微夸大或者隐瞒是没什么问题,但不能过度。因为最重要的还是靠自身的实力,作为…

scala 学习笔记七 基于类型的模式匹配

1、介绍 Scala 提供了强大的模式匹配机制,应用也非常广泛。 一个模式匹配包含了一系列备选项,每个都开始于关键字 case。每个备选项都包含了一个模式及一到多个表达式。箭头符号 > 隔开了模式和表达式。 先看一个整型值模式匹配的例子 match 对应 Jav…

判断程序 java_Java判断程序是否运行

目前用windows系统 判断系统进程就通过Process执行Runtime的exc方法即windows的命令行windows有条tasklist命令 FI方法过滤出匹配的过滤名称tasklist /fi "imagename eq "public boolean isAlive(String procName) {String cmd "tasklist /fi \"" &…

如何实现chrome插件打包为crx文件实现多台电脑共用插件

说到google浏览器最强大的功能个人觉得是各种插件的使用,然而通常是通过chrome商店下载插件,不能实现移植到其他电脑中,只有将其转化为crx格式的文件就可以实现不同电脑共用插件。 那么如何实现本地电脑上下载的chrome商店插件转化为crx文件呢…

spark日志存储路径为mysql_利用Spark解析Tomcat日志,并将统计结果存入Mysql数据库...

本文试图实现的需求场景为:以学习Spark知识点为目的,编写Scala利用Spark解析800M的tomcat日志文件,打印一段时间内ERROR级别记录的前10行,统计每分钟的日志记录数,并将统计结果存入mysql数据库中。之前曾用JAVA写过一次…

base64 图片

已加密的编码 checkCode "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAeAFoDAS…