继承类可以不调用抽象类方法调用方法吗?

【提问】继承抽象类和继承普通类有什么区别?【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:669,563贴子:
【提问】继承抽象类和继承普通类有什么区别?收藏
例如:有两辆车,都是蓝色轿车,只不过车牌号不同,要输出“这是一辆xxx色的车牌号xxxxxx的xxx车”。我可以用两个子类继承一个父类的方法来实现,又何必要用继承抽象类的方法来实现,还是说抽象有什么好处??????
2017java学习来上市公司博为峰学java,入学即签就业协议,不就业不收费,查看java课程!java好学吗?java课程来博为峰学,java工程师就业年薪十几万!
继承抽象类,必须要重写它的抽象方法
首先呢,你要知道什么是抽象类。简单地说,抽象类,就是对一种或者一类事物的概括。比如,人是抽象类,那么军人是他的子类,人这个抽象类中的东西可以将军人这个子类基本概括,但是军人有自己的其他功能和属性,在军人自己的类中定义。通俗易懂啦。
函数的重载:在同一个类当中,允许一个以上的同名函数,只要她们的传入的参数个数或者类型不同即可。
什么时候使用重载?当定义的功能形同,但是参与运算的参数(位置内容)不同。那么,这时就定义了一个函数名称以表示功能,方便阅读,而通过参数列表的不同来区分多个同名函数。
抽象类的特点:抽象方法一定在抽象类中。抽象方法和抽象类都必须使用abstract关键字修饰。抽象类不可以创建对象,因为调用抽象类的函数没有意义。抽象类的方法要被使用,必须由子类进行复写(override)抽象类方法后,建立子类对象调用。如果子类只是覆盖了部分抽象的方法,那么该子类一定是一个抽象类。注意:抽象类中可以不定义抽象方法,这样做仅仅是为了不然别人建立对象。
重载:只看同名参数的参数列表;重写:子,父类方法要一模一样;(函数名字,返回值类型,传入的参数列表等)
重写(复写,覆盖)当子类与父类出现了函数名一样的函数时,当子类对象调用该函数时,只会运行子类函数的内容,就像父类的函数被覆盖了一样。这种情况是函数的另一个特性:重写、复写(覆盖)。当子类继承父类,沿袭了父类的功能,但是子类虽然具有该功能,但是功能的内容却与父类不一致,这时,没有必要定义新功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能的内容。
抽象类的方法必须重写 继承普通不用 因为抽象类里的方法是没有方法块的
51CTO学院11年行业品牌,1400万用户选择,中国专业IT技能学习平台,java.java资深名师授课,0基础从入门到精通,java报名与培训中心.
抽象类就是一个部分实现的接口或者不完全实现的普通类,使用抽象类使用接口都是为java变成提供更好的语义.比如我有一个调用类的方法接口,我知道一个类的某个方法的实现是符合我的标准的,而另外的一些方法我不需要关心,那么这个时候我的参数里就可以是这个抽象类,当然这个可以用纯接口,纯类来代替,甚至你直接全部是静态方法,那不就是一个过程化的语言了嘛,所以一切的语法提供都是为了更好的去表达面向对象这样的一种语义.抽象类的好处就是已经知道他实现了哪些方法,至少保证他的这些方法调用时候子类实现不会有不同,而且还能保证类的灵活性,其它的方法仍然能重新实现.
照着楼主说的,拥有两辆车,都是蓝色的,只是车牌,品牌不同,,需求:定义一个功能描述汽车。继承抽象类,只有描述汽车的方法,没有方法体。抽象类其实只是提供了一种模板,提供给子类参照。在现实世界里,一个普通类提供自己的方法和属性,子类自然可以继承使用,但是却不能满足真实的应用场景。比如比如定义一个class Animal {
public void eat(){
}}动物有繁多,每种都有不同的eat。所有定义动物实现其eat方法就不合理,因为任何具体的动物继承该Animal后就会拥有该eat方法,也许这个eat不是子类应该拥有的eat。也许可以说,子类可以覆写该eat方法,每个子类都选择区覆写,那父类中定义的方法就没有意义了吧。所以定义为抽象的方法,让具体的子类去是我实
你若是使用普通类作为父类,动物eat()方法体里面吃什么呢?
抽象类体现的的就是一种模板模式的设计。抽象类是从多个具体类中抽象出来的父类。从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为其子类的模板,从而避免了子类设计的随意性。
建议楼主去搜搜工厂设计模式。你会明白的
继承抽象类的 类
必须实现抽象类的抽象方法,否则将其也转为抽象类。继承普通类则可以选择实现父类方法。
继承抽象类有抽象类特点,继承普通类有普通类特点…
抽象类不可以直接创建对象,因为是没有主体的。在继承或者实现父类时,需要复写函数,这样可以增加程序的拓展性,方便以后增加对象
抽象类和接口类似
重写抽象类中的抽象方法
抽象类,其实就是对一些事物特征的抽象概括。比如:动物,动物都是会呼吸的,就可以把呼吸抽象出来称为类中的一个方法,注意:含有抽象方法的类一定是抽象类。假设你需要定义一个Dog类和一个Cat类,你会发现,它们都需要呼吸?怎么办?继承动物这个抽象类,它们就必须实现呼吸这个方法,也就是说,抽象类可以一定程度上保证抽象事物特征的完整性。那为什么不直接使用普通类作为父类,而是使用抽象类呢?这里需要注意:即使每个动物都需要呼吸,但是不同动物的呼吸方式却不一定一样,所以采用抽象类的方法强制子类实现呼吸这个方法,显然是比直接用普通方法来得好。我们常说的java多态,就经常使用到抽象类。java多态允许将父类对象引用变量作为子类对象实例的引用。这样是有很多好处的。比如,常见的io流,通过查api文档,你会发现,很多方法需要传入InputStream/OutStream这两个类型的变量作为参数,但是实际上这两个类是抽象类,是不能实例化的,但这里两个类又是传统IO的两个基类,也就是你只需要将这两个基类下子类的实例化对象传入即可。有没有发现,这样方便了许多?包括所谓的工厂模式也是这个道理。
抽象就像一个模板,做一个规范让你照着填,不然谁有谁的命名方式有点乱,只代表个人见解
抽象类大多数运用场景 是什么; 这不是新手要掌握 的 知道 它里面存在一个抽象方法就行这个抽象方法会被怎么应用 , 我只能告诉你
工作一年再来体会,接触架构再来体会 ,你现在远远不够
登录百度帐号推荐应用接口可以继承接口吗,抽象类可以继承接口吗,抽象类可以继承实体类吗? 为什么不可以继承抽象
接口可以继承接口吗,抽象类可以继承接口吗,抽象类可以继承实体类吗? 为什么不可以继承抽象
接口可以继承接口吗,抽象类可以继承接口吗,抽象类可以继承实体类吗?
相关说明:
有什么要注意的吗?
接口可以继承接口,抽象类不可以继承接口,但可以实现接口。抽象类可以继承实体类
接口可以继承(extends)接口,但是抽象类不能继承接口,可以通过implements去实现接口,抽象类是可以继承实体类。抽象类不能通过new的方式创建出来,只能通过extends继承实现。在实现抽象类时,必须实现该类中的每一个抽象方法,而每个已实现的方法必须和抽象类中指定的方法一样,接收相同数目和类型的参数,具有同样的返回值。
1,接口可以继承接口吗?
可以,用extends关键字,而且支持多重继承。2,抽象类可以继承接口吗?
这种说法有问题,是实现,用implements关键字,不能叫继承(extends)。3,抽象类可以继承实体类吗?
可以。抽象类可以有实体方法,当然可以继承实体类了。
java 抽象类能不能继承接口:
好像是不能的。抽象类可以被继承(extends),接口可以被实现(implements),但是抽象类...
接口可以继承接口吗,抽象类可以继承接口吗,抽象类可以继承实体类吗?:
接口可以继承接口,抽象类不可以继承接口,但可以实现接口。抽象类可以继承实体类
java,,,一个接口为什么不可以继承抽象类???:
接口里的方法是不能有方法身体的,但抽象类的方法是可以有方法体的,继承后,在这一点上就会产生矛盾. 抽...
接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(con...:
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是可以继承具体类。抽象类中可以有...
接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(con...:
1、接口是否可继承接口? 答:不可以。接口是要被实现而不是被继承的,加入你用词不当,问接口是否可实现...
抽象类实现接口部分方法,另一部分方法不实现,这部分方法是直接继承到抽象类吗?抽象类可以继承接口吗?:
你先看下基础,分清楚什么是类,什么是抽象类和接口。 一般用法是抽象类实现接口,然后类又继承抽象类,当...
接口是否可继承接口?抽象类是否可实现接口:
接口可以继承接口。 抽象类可以实现(implements)接口 抽象类是否可继承实体类,前提是实体类...
java中,普通类可以继承抽象类吗??:
抽象类与接口紧密相关,它们不能示例化,并且常常部分实现或根本不实现。抽象类和接口之间的一个主要差别是...
请问java中抽象类和接口互相不能继承吗:
接口不能被继承的,抽象类是用来重写的。如果接口被继承了,那么你要使用接口时,系统会用哪个接口呢?明显...
java中继承抽象类和继承普通类有什么区别? abstract class和interface有什么...:
首先我们都知道 抽象类是一种特殊的接口,那就要知道java为什么定义接口,其实说白了,就是为了定义一...2012年7月 Java大版内专家分月排行榜第三2011年11月 Java大版内专家分月排行榜第三2007年12月 Java大版内专家分月排行榜第三2007年10月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。博客分类:
一、类的继承
1、什么是类的继承?
类的继承就是某一个类可以通过extends关键字继承另一个类中的方法和属性。
2、为什么要进行类的继承?
有时我们要定义一个新的类,可能会发现这个类中的属性和方法有很大一部分就是我们在另外一个类中定义的全部属性和方法。这时重新再输入一次未免有些费事费力,而使用继承的话,则可以省去这一步。在编程过程中,继承可以为我们省下很多事。
3、继承的语法格式
public class 子类名 extends 父类名{
}
4、在使用继承中应注意的问题
(1)一个子类只可以有一个父类,即单继承
(2)不是父类中所有属性和普通方法都可被子类使用,此时可分两种情况:一、子类与父类在同一个包中:子类可使用除了用private定义以外的所有普通方法与属性。二、子类与父类不在一个包中:子类只可使用父类中用public定义的属性和普通方法。
5、方法的重写
可以在子类中对父类中的方法进行重写,但是访问修饰符,返回值类型,方法名,参数类型,参数名,参数顺序都必须一样。此时用子类对象优先调用的方法是子类的,若没有重写,优先调用的则是父类中的方法。
方法重写后,若想优先调用父类方法,可用:super.方法名();
6、自动转型
用父类类型变量名来引用子类对象,格式一般为:
父类名 对象名 = new 子类名;
自动转型后,用对象名.方法名(),还是优先调用子类中的方法。但需注意,转型后,不可调用子类中独有的方法。
用如下程序进行说明:
//建立一个父类
public class Cars {
S//姓名属性
//定义获得姓名属性值的方法
public String getName(){
//定义设置姓名属性值的方法
public void setName(String name){
this.name =
//建立一个Bike子类,继承Cars类
public class Bike extends Cars {
//建立一个MotorBike子类,继承Cars类
public class MotorBike extends Cars {
//建立一个Person类作为动作的发起者
public class Person {
String name=&我&;//定义骑车对象
//定义获得姓名属性值的方法
public String getName(){
//定义设置姓名属性值的方法
public void setName(String name){
this.name =
//定义骑车方法
public void rideCars(Cars c){
System.out.println(getName()+&骑&+c.getName());
public class Ride {
//程序的入口函数
public static void main(String[] args) {
// 实例化一个Person类对象
Person p = new Person();
// 实例化一个电动车对象,并自动转型
Cars mb = new MotorBike();
// 设置电动车名字
mb.setName(&MotorBike&);
// 调用骑车方法
p.rideCars(mb);
// 实例化一个单车对象,并自动转型
Cars b = new Bike();
// 设置单车名字
b.setName(&Bike&);
// 调用骑车方法
p.rideCars(b);
}在程序的编写过程中,我发现了一个问题:子类不可继承父类的构造函数,但如果父类中有一个或多个构造方法,那么子类中至少要有一个和父类中构造方法有相同参数的构造方法。
二、 接口
当我们定义一个类时,无非是两种目的:或是实例化生成对象,调用类中的属性和方法;或是作为一个父类被继承。在第二种情况下,有时需要子类重写父类中的所有方法,这就需要用到接口了。
可以借助电脑的USB接口来理解接口的概念,USB接口是已设计好固定好的,但是许多功能不同的设备却可以通过同一个USB接口来与电脑建立连接。也就是说实现了同一个接口的类或接口,可以获得属于这个接口的方法。
1、那么在程序怎样定义一个接口呢?
首先要明确的是,定义接口的关键字是interface。
具体格式如下:
public interface 接口名{
//接口中的属性为常量
public static final 数据类型 常量名=值;
//定义接口中方法(抽象方法)
public [abstract] 返回值数据类型 方法名(数据类型 参数类型,……);
从以上的格式可以看出,接口中的方法是没有方法体,也就是说接口中没用任何方法的具体实现,因此,不可用接口直接创建对象。需要注意的是,接口中默认的访问修饰符为public。
2、接口的实现
实现接口的关键字为implements
格式:public class 类名 implements 接口,……{
一个类可以实现多个接口,在实现接口时必须实现接口中的所有方法。
三、 抽象类
抽象类是介于类和接口之间的定义,在抽象类中可以有已实现的方法,也可以有像接口中一样没有实现的方法。
1、抽象类定义
关键字:abstract class
格式:public abstract class 抽象类名{
&&&& 访问修饰符 数据类型 属性名;
&&&& 访问修饰符 类名(数据类型 参数名,……){
& //方法体
& 访问修饰符 返回值数据类型 方法名(数据类型 参
数名,……){
& //方法名
//抽象方法
& 访问修饰符 返回值数据类型 abstract方法名(数据类型 参
数名,……);
由于抽象类中有抽象方法,自然也就不能直接创建对象。
2、抽象类的继承
用extends关键字实现继承。一个类只能继承一个抽象类,且必须实现抽象类中所有抽象方法。
3、抽象类的应用
有时我们只需用到某个接口的某些而不是全部方法,如果直接实现接口的话就要定义许多空方法。此时,若使用抽象类就可以用哪个方法则重写哪个方法了。
浏览: 5952 次
yfzsj 写道byte bytes[] = new byte ...
byte bytes[] = new byte[(int)Ma ...
看不懂。。。。我要多来几遍了,唉
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'76被浏览4565分享邀请回答2710 条评论分享收藏感谢收起

我要回帖

更多关于 c 抽象类普通方法调用 的文章

 

随机推荐