-
2020-04-06 17:28:24
没有实际工作的方法, 我们可以把它设计成一个 抽象方法,而包含抽象方法的类我们称之为抽象类
我们将汽车的所加的燃料设计成一个抽象方法,将其放入类中,就构成了一个抽象类
public abstract class Car { private String carName; private String carNum; public String getCarName() { return carName; } public void setCarName(String carName) { this.carName = carName; } public String getCarNum() { return carNum; } public void setCarNum(String carNum) { this.carNum = carNum; } public Car() { } public Car(String carName,String carNum) { setCarName(carName); setCarNum(carNum); } //抽象类 public abstract void addEnergy(); }
抽象类:包含抽象方法的类,我们把它叫做 抽象类
1、用关键字abstract进行修饰
2、在抽象类当中 可以有普通类的所有属性或者方法
3、和普通的类 不一样的地方就是,包含了抽象方法。
4、和普通的类 不一样的地方就是 他不能够被实例化
5、抽象类的主要作用就是用来被继承的
6、抽象类就是用来被继承的 所以:不能被final所修饰
7、抽象方法 也不能是私有的 或者是 static的8、只要有一个类,继承了这个抽象类 那么 必须要重写抽象类当中的方法。
9、如果这个类,不想重写抽象类里面的抽象方法,那么此时这个类也可以设置为抽象类。
我们需要知道的是,只要类中有一个抽象方法,这个类就是抽象类。有抽象方法的类一定是抽象类,而抽象类不一定有抽象方法。
抽象类本身是无法实例化的,要想使用,必须 创建该抽象类的子类. 然后让子类重写抽象类中的抽象方法
一个类如果要继承抽象类中,必须重写抽象类中的抽象方法。
public class EleCar extends Car{ public EleCar(String carName,String carNum) { super(carName,carNum); } @Override//重写的抽象方法 public void addEnergy() { System.out.println(getCarName() + "加电"); } } public class GasCar extends Car { public GasCar(String carName,String carNum) { super(carName,carNum); } @Override public void addEnergy() { System.out.println(getCarName() + "加柴油"); } } public class OilCar extends Car{ public OilCar(String carName,String carNum) { super(carName,carNum); } @Override public void addEnergy() { System.out.println(getCarName() + "加汽油"); } }
更多相关内容 -
抽象类和继承总结
2018-08-04 14:31:37继承:是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有 继承的好处:可继承的属性和方法。 提高了代表的可维护性 提高了代码的...- 继承:是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有
- 继承的好处:可继承的属性和方法。
-
提高了代表的可维护性
提高了代码的复用性
让类与类之间产生了继承关系
-
- 继承的弊端:
-
类与类之间的耦合度过高
-
- 继承特点:
-
java中类只能够单继承,不能多继承,可以多层继承
class Yy extends Object {}
class Fu extends Yy{}
class Zi extends Fu {}
所有的类都直接或者间接的继承了 Object类,Object类称为祖宗类
-
- 继承的注意事项:
-
1,使用关键字 extends 让类与类之间 产生继承关系
2, 父类私有的成员,子类不能继承,因为根本看不到
3,不能为了继承某个功能而随意进行继承操作, 必须要符合 is a 的关系
苹果 is a 水果
男人 is a 人
狗 is a 人 , 这种情况就不能继承了
-
- 继承中的成员变量关系:
-
不同名的变量:
子类直接继承使用
同名的变量:
默认访问的是子类自己的成员变量, 想访问父类中的同名变量,请使用 super.成员变量;
-
- 继承中的成员方法关系:
-
不同名的方法:
子类直接继承使用
同名的方法:
默认访问的是子类自己的成员方法,想访问父类中的同名方法,请使用 super.成员方法();
-
- super:用来表示当前对象中包含的父类对象空间的引用
-
调用父类的成员变量:
super.成员变量;
调用方法的成员方法:
super.成员方法();
-
- 方法重写(override):指 在子父类中,出现了方法声明相同的情况,也叫做方法覆盖,方法复写
- 方法重写的注意事项:
- 方法重写(override):指 在子父类中,出现了方法声明相同的情况,也叫做方法覆盖,方法复写
- 子类的方法声明要与父类相同
-
2, 子类要重写方法的方法,方法的权限修饰符不能比父类的更低
-
- 3, 父类私有的方法,子类不能够进行方法重写
- 方法重载(overload):指 在同一个类中,多个方法名称相同,它们的参数列表不同(个数不同,数据类型不同)
- 抽象
- 抽象方法: 方法只有声明部分,没有方法体
- 抽象类: 包含抽象方法的类,一定是抽象类
-
使用 abstract 修饰的类,是抽象类
-
- 抽象类的特点:
-
1,抽象类与抽象方法都必须使用 abstract来修饰
2,抽象类不能直接创建对象
3,抽象类中可以有抽象方法,也可以没有抽象方法
4,抽象类的子类
a,实现了抽象方法的具体类
b,抽象类
-
- 抽象类面试题:
-
1,抽象类中是否可以没有抽象方法?如果可以,那么,该类还定义成抽象类有意义吗?为什么?
可以没有抽象方法,有意义,不会让其他人直接创建该类对象
-
Java基础教程之接口的继承与抽象类
2020-09-04 05:19:23主要介绍了Java基础教程之接口的继承与抽象类,本文介绍了接口继承、接口的多重继承以及抽象类的知识,需要的朋友可以参考下 -
java中抽象类、抽象方法、接口与实现接口实例详解
2020-08-28 22:17:08主要给大家介绍了关于java中抽象类、抽象方法、接口与实现接口的相关资料,文中通过示例代码将四者介绍的非常详细,并且简单介绍了抽象类和接口的区别,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。 -
java 接口的继承与抽象类
2021-02-28 15:12:44在实施接口中,我们利用interface语法,将interface从类定义中独立出来,构成一个主体。...接口继承接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型。...在实施接口中,我们利用interface语法,将interface从类定义中独立出来,构成一个主体。interface为类提供了接口规范。
在继承中,我们为了提高程序的可复用性,引入的继承机制。当时的继承是基于类的。interface接口同样可以继承,以拓展原interface。
接口继承
接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型。比如,我们以Cup作为原interface:
interfaceCup {
void addWater(intw);
void drinkWater(intw);
}
我们在继承Cup的基础上,定义一个新的有刻度的杯子的接口,MetricCup
接口如下:
interfaceMetricCup extends Cup
{
intWaterContent();
}
我们增添了一个新的方法原型WaterContent(),这个方法返回一个整数(水量)。
interface的多重继承
在Java类的继承中,一个衍生类只能有一个基类。也就是说,一个类不能同时继承多于一个的类。在Java中,interface可以同时继承多于一个interface,这叫做多重继承(multiple inheritance)。
比如我们有下面一个Player接口:
interfacePlayer
{
voidplay();
}
我们新增一个MusicCup的接口。它既有Cup接口,又有Player接口,并增加一个display()方法原型。
interface MusicCup extendsCup, Player
{
voiddisplay();
}
(如何使用interface,见实施接口)
抽象类
在生活中,我们会有一些很抽象的概念。这些抽象的概念往往是许多类的集合,比如:
粮食 (可以是玉米、小麦、大米)
图形 (可以是三角形、圆形、正方形)
再比如,我们之前举出了例子:
人类 (可以是男人、女人)
在组织这样的关系时,我们可以使用继承,比如:
根据我们的常识:
"Food类的对象"的说法是抽象的。这样一个对象应该是属于Corn, Rice, Wheat子类中的一个。
Food类有eat()方法 (食物可以吃)。然而,这样的一个动作是抽象的。粮食的具体吃法是不同的。比如Corn需要剥皮吃,Wheat要磨成面粉吃。我们需要在每个类中覆盖Food类的eat()方法。
抽象与具体
Java中提供了抽象类(abstract class)的语法,用于说明类及其方法的抽象性。比如:
abstract classFood {
public abstract voideat();
public void happyFood();
{
System.out.println("Good! Eat Me!");
}
}
类中的方法可以声明为abstract,比如上面的eat()。这时,我们不需要具体定义方法,只需要提供该方法的原型。这与接口类似。当我们在比如Corn类中继承该类时,需要提供eat()方法的具体定义。
类中的另一个方法happyFood()并不是
当一个类中出现abstract方法时,这个类的声明必须加上abstract关键字,否则Java将报错。一个abstract类不能用于创建对象。
抽象类的继承
我们可以像继承类那样继承一个抽象类。我们必须用完整的方法定义,来覆盖抽象类中的抽象方法,否则,衍生类依然是一个抽象类。
抽象类的定义中可以有数据成员。数据成员的继承与正常类的继承相同。
总结
interface继承,多重继承
abstract method, abstract类
-
java的继承及其抽象方法
2021-12-28 21:50:411包含抽象方法的类叫做抽象类 2一个没有具体实现的方法 ...8抽象类A继承了抽象类B 那么抽象类 A可以不用重写 抽象类B的抽象方法 9类C继承了抽象类A 而A抽象了抽象类B 那么类C必须重写抽象类A和抽象类B中的所有方法 ...目录
前言
java是面向对象的,为了更方便的实现类与类之间的共性,从而产生了继承,把这些共性可以放在一个类中就可产生一个父类,可供有这些共性的子类来使用。而继承中父类中总会有哪些不需要具体实现的方法,而这些方法不用具体实现的话呢,我们就可以来使用抽象类来充当这个类,从而使得继承更加方便使用!!
一、什么是继承?
继承就是抽取类与类之间的共性,通过关键字extends进行处理的,方便了代码的重复使用。继承是会产生子类与父类的,而java中所有类的父类都可以是Object,而其他类都是Object的派生类!
二、继承的实现
首先我需要先把继承里面的一些关键字来进行介绍,继承最重要的就是extends了,继承就是通过这个关键字来进行处理的,形如(class B extends A)其中A就是B 的父类而B就是子类了。其次父类当中是可以有构造方法的,如果没有的话系统也会默认有无参数的构造方法的,在子类中需要调用父类的构造方法是就需要使用到super这个关键字了,super只能出现在构造方法当中,且只能出现在第一行这是比较特殊的。最后如果一个类不想被继承的话你可以使用final来进行修饰,这样这个类就不会被继承了,下面是具体的代码:
final class A{//一个类不想被继承可设置为final修饰 final 修饰属性 就是常量了 } class Animal{ public String name;//当子类变量未赋值的时候 如果同名的 优先访问自己的 除非super来引用 public int age;//子类里面只能访问公共类型的 private int count;//子类不能访问 私有类型的 protected String sex;//protected保证其他类继承时可以使用 用public 在哪都可以使用 public void eat(){ System.out.println(name + "正在吃"); } Animal(String name,int age){//构造方法 this.name = name; } } class Dog extends Animal{//继承(Dog Brid 都是子类 或者派生类 Animal 是父类 基类或超类) public Dog(String name,int age){ super(name,age);//显示调用构造方法 } @Override public void eat(){ System.out.println(name + "正在大口吃"); } } class Brid extends Animal{//java当中是单继承 不能多继承 子类构造同时要帮助父类来进行构造 //super();调用父类的构造方法 super不能出现在静态方法中 super:子类调用父类的 //super.fun()调用父类的普通方法 //super.data调用父类的成员属性 public String wing; public Brid(String name,int age,String wing){ super(name,age);//显示调用构造方法 super只能在当前构造方法中 且只能在第一行 this.wing = wing; } public void fly(){ System.out.println(name + "正在飞"); } } public class Test { public static void func(Animal animal) { } public static void main(String[] args) { Dog dog = new Dog("huahua", 2); System.out.println(dog.name); dog.eat(); System.out.println(dog.sex); } } }
三、抽象类及方法
在父类中如果出现一些不用具体实现的方法时,我们可以把这个方法设为抽象的从而它就可以不用具体实现而被子类使用了,这个类也用设置为抽象类的了,都通过关键字abstract来进行处理。抽象类就是专门用来继承的!
下面是一些抽象方法需要注意的地方:
1、包含抽象方法的类叫做抽象类
2、一个没有具体实现的方法 被abstract修饰
3、抽象类是不可以被实例化的(new)
4、因为不能被实例化 所有只能被继承
5、抽象类当中也可以包含和普通类一样的成员和方法
6、普通类要继承抽象类 必须重写抽象类中的所有的抽象方法
7、抽象类最大的作用就是被继承
8、抽象类A继承了抽象类B 那么抽象类 A可以不用重写 抽象类B的抽象方法
9、类C继承了抽象类A 而A抽象了抽象类B 那么类C必须重写抽象类A和抽象类B中的所有方法
四、抽象方法的具体实现
abstract class Shape { // 抽象类抽象方法都不能被final修饰 public abstract void draw() ;//抽象方法 不能是private的 } class Rect extends Shape{ @Override public void draw() {//一定要重写 否则会报错(继承抽象类) System.out.println("♦"); } } abstract class A extends Shape{ public abstract void func(); } public class Test { public static void drawMap(Shape shape){ shape.draw(); } public static void main(String[] args) { Shape shape = new Rect();//可以new成子类对象 //Shape shape = new Shape() ;不能实例化 drawMap(shape); } }
总结
以上就是关于继承和抽象的描述以及实现了,其中也有写的不好的地方,也希望可以理解一下!!这其中有关于重写和多态的相关知识,后续我也会详细介绍的!!
-
设计一个扩展自抽象类GeometricObject 的新的Triangle 类
2017-10-21 15:54:41(三角形类)设计一个扩展自抽象类GeometricObject 的新的Triangle 类。绘制Triangle 类和GeometricObject 类的UML图并实现Triangle 类。 编写一个测试程序,提示用户输入三角形的三条边、一种颜色以及一个表明该... -
抽象类概念及其作用
2019-06-03 10:41:26一、什么是抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的...由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计... -
Java抽象类/抽象方法定义及其特性详解
2021-04-16 13:31:34类的继承结构中,越往上...定义抽象类的作用是将一类对象的共同特点抽象出来,成为代表该类共同特性的抽象概念,其后在描述某一具体对象时,只要添加与其他子类对象的不同之处,而不需要重复类的共同特性。这样就使... -
Java :抽象类的使用及其注意事项
2019-08-10 20:33:40抽象类的使用及其注意事项 概述 加深对抽象类概念的理解及属性该类的使用 1.什么是抽象类 通俗的说,不是具体的东西,都是抽象的,那么在java中,可以理解为不是具体的类,就是抽象类。对抽象类的理解,需要结合... -
面向对象编程之继承、多态、封装、抽象类、接口、包-上
2021-04-20 17:02:16面向对象编程之继承、多态、封装、抽象类、接口、包继承类的继承格式为什么要继承继承的特点继承的种类及关键字访问权限多态向上转型动态绑定方法重写重写和重载的区别比较多态的优点封装实现Java的封装封装的优点... -
C#OOP之八 继承 接口和抽象类
2016-04-28 18:24:53继承 在现实生活中有所谓的“种瓜得瓜、种豆得豆”的说法,在生物学概念上就是“遗传”的概念,在面向对象中“继承”就类似于生物学中的遗传,通过继承,可以更好的实现代码的重用(复用,多次使用的意思)、增加... -
深入解析Java编程中的抽象类
2021-03-16 19:57:38深入解析Java编程中的抽象类发布于 2020-4-10|复制链接摘记: Java程序用抽象类...抽象类刻画了公有行为的特征,并通过继承机制传送给它的派生类。在抽象类中定义的方法称为抽象方法,这些方法只有方法头的声明,而... -
20160720(A) 继承总结/final/抽象类及其特点/抽象类中的成员/例题/与其他关键字的冲突
2016-08-02 08:41:39继承 --好处:提高代码的复用性,提高开发效率;--弊端:影响封装 class Father { viod show() { System.out.println("A"); } } class Son extends Father { void show() { System.out.println("B")... -
抽象类-接口-上机实验题目.doc
2020-10-10 06:53:11NUMPAGES 上机实验题目 完成该题目并写设计报告实验报告给出设计思想和设计方法及其所涉及到的有关内容第11周上课时交设计报告 代码发到邮箱wldl6@126.com并在邮件主题中注明你的学号和姓名 问题 利用抽象类和接口... -
C# 类方法的继承(new、override用法)(抽象类、接口)
2020-03-15 21:56:30一、C#类方法的继承 子类有两种方式来重载父类中的方法 ①virtual+override ②new using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; ... -
JAVA程序设计 继承与多态 员工类及其子类员工类及其子类
2021-04-15 11:04:08员工类及其子类 【问题描述】 编写抽象类-员工类,有姓名、工号(int型)、基本工资(double型)属性,计算工资为抽象方法,由员工类派生出教师、实验员和行政人员三个类。教师有课酬标准(整型,元/小时)和月课时... -
腾讯架构师讲解Java接口的继承与抽象类
2020-12-09 22:11:28在实施接口中,我们利用interface语法,将interface从...接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型。比如,我们以Cup作为原interface: interface Cup { void ad. -
定义一个抽象类Shape,在抽象类Shape中定义求面积... 分别定义继承抽象类Shape的3个子类即Triangle、Rectang
2022-01-18 11:03:50class Shape: def __init__(self,areas=0,primeters=0): self.areas=areas self.Primeters=primeters def GetPrimeter(self): pass def GetArea(self): pass class Triangle(Shape): def __init__(self,said... -
实现接口和继承抽象类的练习
2018-04-13 15:13:12实现接口和继承抽象类的练习/* 教练和运动员案例(学生分析然后讲解) 乒乓球运动员和篮球运动员。 乒乓球教练和篮球教练。 为了出国交流,跟乒乓球相关的人员都需要学习英语。 请用所学知识: 分析,这个... -
java:抽象的两种实现方式(抽象类和接口)及其比较
2018-02-23 20:57:38在Java中,可以通过两种形式来体现面向对象的编程(OOP)的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。下面我们就一起来学习一下Java中的接口和抽象类。 一.抽象类 在了解抽象类之前,先... -
6-2 设计抽象动物Animal类及其子类
2021-12-01 22:31:25Animal抽象类:私有name属性(String型),私有age属性(int型),抽象方法info(),抽象方法speak(),构造方法,setter和getter Dog类:增加灵性agility属性(int型),覆盖info()和speak()方法,构造方法,setter和... -
Java抽象类和抽象方法归纳总结
2020-06-11 12:26:24这篇文章从不同角度归纳介绍了抽象类的知识点及其注意事项。文中引用的具体例子在这里:抽象类的一个例子 Triangle类是继承自抽象类GeometriObject的具体子类 GeometriObject中包含两个抽象方法:getPerimeter,... -
C#抽象类及其方法的学习(自用)
2017-04-23 13:18:58不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们 的实例。 "一个包含一个或多个纯虚函数的类叫抽象类,抽象类不能被实例化,进一步 一个抽象类只能通过接口和作为其它... -
抽象类及其用法
2013-12-22 09:30:45抽象类及其用法 By SarveshShukla, 20 Dec 2013 Translated by litdwg Download source - 20 KB 简介 初学者对于抽象类会很迷惑。虽然抽象类的语法很简单,但何时、如何使用抽象类困扰着很多开发... -
Java接口、抽象类、继承
2015-06-12 19:48:38Java的继承是面向对象的特性之一,包括抽象类及其子类、类实现接口等都是继承的体现。 Java在继承这一块有很多的东西需要理解,而这些都建立在对象以及内存的分配和Java的构造函数的调用顺序上,还有父类和子类的... -
java抽象类和抽象方法
2021-03-07 00:02:17一、什么是抽象类和抽象方法没有具体功能的实现,通过子类继承后重写方法来实现一定约束的类称之为抽象类,抽象类必须被abstract修饰。抽象方法就是只有方法...三、抽象类和抽象方法的语法规则及其注意事项抽象类... -
抽象类与接口及其派生类的关系
2019-07-09 04:50:00抽象类: 包含抽象方法的类 接口: 抽象类中的方法都是抽象方法时,可以定义为接口 实现: 抽象方法: 方法的声明时需:abstract 抽象类: 类的声明时需: abstract 接口: 接口的声明时需:interface ...