Java 抽象类和抽象方法

Java 抽象类和抽象方法

  • 抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。
  • 使用抽象类可以充分利用这些公共属性来提高开发和维护程序的效率。
  • 抽象方法必须为public或protected。(因为如果是private,则不能被子类继承,子类无法实现该方法)抽象方法没有方法体。
  • 抽象类和抽象方法用abstract修饰。
  • 子类如果不是抽象类,则必须重写抽象类中的全部抽象方法。如果子类没有实现父类的抽象方法,必须将子类也定义成抽象类。
  • 抽象类不能用final关键字声明,因为抽象类必须有子类,但是final定义的类不能有子类。
  • 抽象类不能直接实例化,需要依靠子类向上转型的方式实例化。
public abstract class Animal {//抽象类Animal要用abstract关键字声明。public abstract void shout();//抽象方法没有方法体,用abstract修饰。
}
public class Dog extends Animal {//子类继承抽象类public void shout() {//Dog子类不是抽象类,必须重写抽象类中全部抽象方法。System.out.println("汪汪汪");}
}
public class Test {public static void main(String[] args) {// TODO Auto-generated method stubAnimal a1 = new Dog();//抽象类不能直接实例化,需要依靠子类向上转型的方式实例化。Animal a1 = new Animal()报错a1.shout();//a1拥有了Dog类重写的shout方法。}
}

抽象类和普通类的区别:

  • 抽象类比普通类多了一些抽象方法,其他组成部分和普通类完全一样。
  • 普通类对象可以直接实例化,抽象类对象必须向上转型之后才可实例化。
  • 子类继承抽象类,子类需要重写方法。但是子类继承普通类,子类可以有选择地决定是否需要重写方法。
//抽象类实例:
public abstract class Shapes {public abstract double getArea();public abstract double getPerimeter();
}
public class Circle extends Shapes {double r;public Circle(double r) {//构造函数this.r = r;}public double getArea() {return r*r*Math.PI;}public double getPerimeter() {return 2*Math.PI*r;}
}
public class Square extends Shapes{int width;int height;public Square(int width, int height) {//构造函数this.width = width;this.height = height;}public double getArea() {return width*height;}public double getPerimeter() {return 2*(width + height);}
}
public class Test {public static void main(String args[]) {Circle c1 = new Circle(1.0);System.out.println("圆形面积为 " + c1.getArea());System.out.println("圆形z周长为 " + c1.getPerimeter());Square s1 = new Square(1,1);System.out.println("正方形面积为 " + s1.getArea());System.out.println("正方形周长为 " + s1.getPerimeter());}
}
/*
圆形面积为 3.141592653589793
圆形z周长为 6.283185307179586
正方形面积为 1.0
正方形周长为 4.0
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ltrim函数php,php ltrim函数怎么用?

php ltrim()函数用于删除字符串左边的空格或其他预定义字符,语法为“ltrim(string,charlist)”,参数string指定需要处理的字符串,参数charlist指定要从字符串中删除哪些字符;然后返回已修改的字符串。php ltrim函数作用&#xff1…

php免费根据ip查城市,根据ip获取城市的方法

这个方法放到includes/lib_base.php的最下面/*** 根据ip获取城市的方法* param type $ip ip地址* return boolean|string**/function GetIpLookup($ip ){if(empty($ip)){return 请输入IP地址;}$res file_get_contents(http://int.dpool.sina.com.cn/iplookup/iplookup.php?f…

java strcpy,详解C语言中strcpy()函数与strncpy()函数的使用

C语言strcpy()函数:复制字符串头文件:#include 定义函数:char *strcpy(char *dest, const char *src);函数说明:strcpy()会将参数src 字符串拷贝至参数dest 所指的地址。返回值:返回参数dest 的字符串起始地址。附加说…

使用github+hexo搭建静态blog

解决了个人博客图片不显示问题。解决了打开页面产生404问题。学习了如何更换界面主题。学习了如何使用Git。 注:这篇文章仅仅是入个门,了解一下怎么使用githubhexo创个静态blog,具体blog细节比如个人介绍,评论插件,音…

java 安卓调试,Android Studio(二十一):调试你的应用

Android Studio包含了一个调试器,允许你调试运行在Android虚拟机或连接的Android设备的应用。通过Android Studio的调试器,你可以:1、 选择你调试设备的app2、 为你的代码设置断点3、 在运行时检测变量和表达式4、 截图和录像通过点击工具栏中…

java将属性练成字符串,Java中通过属性字符串名取属性内容

在Android开发当中资源的获取其实是间接通过R文件进行的,这个R文件就相当于是一个地址列表,存放着每个资源的地址那么如何快速高效的获取就是这篇文章要分析的问题假设我们有一个图片资源叫btn_bg那么将一个按钮背景设置为这个图片的方式就是btn.setBackgroundResource(R.drawa…

AttributeError: module ‘numpy‘ has no attribute ‘int‘.

解决方法 降低numpy版本 numpy 1.22 修改源代码 参考 [1] 【已解决】AttributeError: module ‘numpy‘ has no attribute ‘int‘. [2] AttributeError: module numpy has no attribute int .报错解决方案

Java字段和属性

属性和字段区别: Java中的属性(property),通常可以理解为get和set方法。更形象的说就是:属性是对字段的封装,供外部访问。 而字段(field),通常叫做“类成员”,或 "类成员变量”,有时也叫“…

java我现在不懂看不懂,看都看不懂,难道我与Java无缘吗

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼package VIP;public class Hero {private String name;private int Life;public void hero(String name,int Life){}public String getName() {return name;}public void setName(String name) {this.name name;}public int getLi…

Java反射 Class类

Class类的实例表示正在运行的Java应用程序中的类和接口。它是Java反射的基础,对任何一个类,首先产生一个Class对象,然后才通过class类获得其他的信息。 获取class类对象方式: 通过Object类提供的getClass()方法获得Class类对象。…

php数字从大到小生成,php输入几个数从大到小排序的案例

php输入几个数从大到小排序的案例发布时间:2020-10-28 11:53:20来源:亿速云阅读:66作者:小新php输入几个数从大到小排序的案例?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小…

Java反射 Constructor类

Java反射 Constructor类 Java通过反射可以获取构造方法,和使用构造方法创造对象。 在网上找了一个比较好理解的例子来弄清楚Constructor类。 public Constructor getConstructor()// 公共构造方法对象 public Constructor[] getConstructors()//所有公共构造方法…

mysql hammerdb,[料理佳餚] 用 HammerDB 來執行資料庫 TPC-C 效能量測

TPC-C 模擬的情境TPC-C 模擬的情境是一個大型的商品批發商,擁有若干個倉庫,每個倉庫擁有 100000 件商品庫存、負責為 10 個地區供貨,每個地區服務 3000 名客戶,每名客戶平均一筆訂單有 10 項商品,所有訂單中約 1% 在其…

使用Linux进行c或c++编程

使用Linux进行C或c语言编程 1.创建名为 HelloWorld 的 c 或者 c 文件 vim HelloWorld.c vim Helloworld.cpp2.然后就进入文本编辑界面 输入i,进入编辑模式。写代码。按esc键,进入命令模式,输入:wq保存并退出文本编辑器。然后可以看见对应位…

如何用php写表单中的年月日,php写的日历程序 - adamboy的个人页面 - OSCHINA - 中文开源技术交流社区...

$weekArr array(Sun,Mon,Tue,Wed,Thu,Fri,Sat);//获取空格://echo date("D",strtotime("2012-02-07"));function getSpace($month,$year){global $weekArr;if(!$year){$year date("Y");}$firstDay date("D",strtotime($…

Java反射 field

Java反射 field 获取字节码文件对象 Class c Class.forName(“fieldtest.Student”); 通过无参构造方法创建对象obj Constructor con c.getConstructor(); Object obj con.newInstance(); 通过成员变量名,获取单个的成员变量 Field nameField c.getField("name"…

mysql5.7循环,python3.4用循环往mysql5.7中写数据并输出的实现方法

python3.4用循环往mysql5.7中写数据并输出的实现方法来源:中文源码网 浏览: 次 日期:2018年9月2日python3.4用循环往mysql5.7中写数据并输出的实现方法 如下所示:#!/usr/bin/env python# -*- coding:utf-8 -*-# __author__ …

java反射 Method

java反射 Method 获取字节码文件对象 Class c Class.forName("fieldtest.Student");通过无参构造方法创建对象obj Constructor con c.getConstructor(); Object obj con.newInstance();Method m1 c.getMethod(“study”);获取study方法 m1.invoke(obj);使用obj对…

axure 鼠标变成手,Axure教程|鼠标移入移出自动显示与隐藏三级菜单

前几天因工作需要做一个鼠标移入显示隐藏菜单,鼠标移出自动隐藏菜单,做的时候觉得没有什么问题,做完后预览就发现一个很严重的问题,就是鼠标移出一级菜单向二级菜单时二级菜单不显示,或者二级菜单显示三级菜单不显示。…

java与平台无关的原因

Java字节码 Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行。解释是通过Java虚拟机来执行的。 java要运行要经过如下步骤 ① Java源文件—->编译器(工具)—->…