abstractjava
⑴ java中abstract怎么使用
abstract就是抽象
用来修饰类和方法
比如
public abstract class Text{
public void function(){............}
}
这个是抽象类,使用的时候不可以直接对Text实例化
就是说不能这样用:Text t=new Text();//报错
里面的所有属性需要通过继橘锋乱承获得
要通过
public class TextA extends Text{
}
TextA a=new TextA();
a.function();
//////////////////////////////////////////
抽象方法就是:
public abstract class Text{
public abstract void function();//注意这里只是一个声明,方法用抽象修饰,并无内容
}
要通过
public class TextA extends Text{
public void function(){....}//要通过具体实现后这个方圆档法才可以用
}
TextA a=new TextA();
a.function();
结论:
有抽基羡象方法的类一定是抽象方法
抽象类里面可以没有抽象方法
抽象类只能继承,不能实例化
⑵ 怎么理解JAVA中的abstract类和abstract方法
这个问题网上有回答:
含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。
下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
⑶ Java中的abstract方法和abstract类的问题
/*
抽象类:
目前存在的问题:
1.动物类的run方法描述的不正确。
2.没有强制要子类一定要重写run方法。
抽象类的应用场景:
我们在描述一类事物的时候,发现该种事物确实存在着某种行为,
但是这种行为目前是不具体的,那么我们可以抽取这种行为的声明,但是
不去实现该种行为,这时候这种行为我们称作为抽象的行为,我们就需要使用抽象类。
抽象类的好处:强制要求子类一定要实现指定的方法。
抽象类要注意的细节:
1.如果一个函数没有方法体,那么该函数必须要使用abstract修饰,把该函数修饰成抽象的函数。。
2.如果一个类出现了抽象的函数,那么该类也必须使用abstract修饰。
3.如果一个非抽象类继承了抽象类,那么必须要把抽象类的所有抽象方法全部实现。
4.抽象类可以存在非抽象方法,也可以存在抽象的方法.
5.抽象类可以不存在抽象方法的。
5.抽象类是不能创建对象的。
疑问:为什么抽象类不能创建对象呢?
因为抽象类是存在抽象方法的,如果能让抽象类创建对象的话,那么使用抽象的对象
调用抽象方法是没有任何意义的。
6.抽象类是存在构造函数的,其构造函数是提供给子类创建对象的时候初始化父类的属性的。*/
//动物类--->抽象类
abstractclassAnimal{
Stringname;
Stringcolor;
publicAnimal(Stringname,Stringcolor){
this.name=name;
this.color=color;
}
//非抽象的方法
publicvoideat(){
System.out.println(name+"吃粮食");
}
//移动...
publicabstractvoidrun();
}//狗是属于动物中一种
classDogextendsAnimal{
publicDog(Stringname,Stringcolor){
super(name,color);
}
publicvoidrun(){
System.out.println(name+"四条腿跑得很快...");
}
}
//鱼是属于动物中一种
classFishextendsAnimal{
publicFish(Stringname,Stringcolor){
super(name,color);
}
publicvoidrun(){
System.out.println(name+"摇摇尾巴游啊游!");
}
}
classDemo3{
publicstaticvoidmain(String[]args)
{
/*
Dogd=newDog("牧羊犬","棕色");
d.run();
//创建一个鱼对象
Fishf=newFish("锦鲤","金黄色");
f.run();
*/
Animala=newAnimal();
}
}
⑷ java中抽象的方法(abstract)有什么作用
抽象类、就是一个用abstract修饰轮脊的类,在这个类中、你可以定义一些不需要具体实现的方法、也就是没有方法体的方法、这些方法叫做抽象方法、当一个类要继承这个抽象类时、就必须要实现这些抽象方法、。当你在做一个比较复杂的项目时、一些简单的方法就可以马上写出来、但一些复杂的方法、在不同枝搭的类中需要不同的实现、那么这猛桐拿个时候就需要用到抽象类的。。。
⑸ JAVA中abstract
2是对的
抽象类中可以没有抽象的方法,只是抽象类不能实例化。
但是一旦一个类中有抽象方法,所在class必定要是class,否则会有编译错误
⑹ java中为什么要引人abstract类和方法了
java引哗知袭入抽象类的意义:
1,为子类提供一个公共的类型;
2,封装子类中重复内容(成员变量和乱兄方法);
3,定义有抽象方法,子类虽然有不同的实现,但该方法的定义是一致的。
抽象方法:由abstract修饰的方法为抽象方法,抽象方法只有方法的定义,没有方法的实现。
抽象类:一个类中如果包含抽象方法,个i类应该用abstract关键字声明为抽猛唯象类。
抽象类不可以实例化,即使一个类中没有抽象方法,也可以将其定义为抽象类,同样,该类不可以实例化。抽象类和接口的区别:
抽象类:为了被子类继承,为子类提供了同一的方法入口;
接口:定义了一个标准(特殊的抽象类)。
⑺ java中abstract方法的格式是什么
抽象成员方法的定义格式为:
【方法修饰词列表】 返回类型 方法名(方法的参数列表);
其中,方法修饰词列表含有关键字abstract。
如果方法修饰词列表还含有其他方法修饰词,则在相邻方法修饰词之间通过空格隔开。
方法的参数列表可以不包含参数、也可以包含1个或多个参数。
例如:public abstract int p(int x,String s);
抽象方法的定义格式与不具有抽象属性的成员方法的定义格式之间的区别:
①除了是否含有方法修饰词abst之外,抽象成员方法的定义以分号结束,不含方法体。
②而不具有抽象属性的成员方法的定义在成员方法声明之后不能立即出现分号,必须含有方法体。
注意:如果一个类不具有抽象属性,则不能再该类的类体中定义抽象成员方法
⑻ Java中abstract和interface的区别
1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
7.接口中的方法默认都是 public,abstract 类型的。
⑼ java在什么情况下要使用抽象方法abstract
参考如下内容:
当父类的某些方法不确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]。
我们都知道,父类是将子类清链镇所共同拥有的属性答粗和方法进行抽取,这些属性和方法中,有的是已经明确实现了的,有的还无法确定,那么我们就可以将其定义成抽象,在后日子类进行唤逗重用,进行具体化。这样,抽象类也就诞生了。
例如,定义了“动物”父类,其中“动物名称”和“动物年龄”属性已经明确了,但是“动物叫”的方法没有明确,此时就可以将“动物叫”定义为抽象方法。
所以,抽象类是为了把相同的但不确定的东西的提取出来,为了以后的重用。定义成抽象类的目的,就是为了在子类中实现抽象类。
⑽ java中abstract怎么使用啊,说的详细点。举几个有代表的例子
使用abstract(抽象)修饰符,可以修饰类和方法。
1、abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。
2、abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以";"代替。需要子类继承实现(覆盖)。
注意:有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。
abstract修饰符在修饰类时必须放在类名前。
abstract修饰方法就是要求其子类覆盖(实现)这个方法。调用时可以以多态方式调用子类覆盖(实现)后的方法,也就是说抽象方法必须在其子类中实现,除非子类本身也是抽象类。
注意:父类是抽象类,其中有抽象方法,那么子类继承父类,并把父类中的所有抽象方法都实现(覆盖)了,子类才有创建对象的实例的能力,否则子类也必须是抽象类。抽象类中可以有构造方法,是子类在构造子类对象时需要调用的父类(抽象类)的构造方法。
举个简单的例子下面有一个抽象类:
abstract class E{
public abstract void show();//public abstract 可以省略
}
然后其它类如果继承它通常为了实现它里面的方法:
class F extends E{
void show(){
//写具体实现的代码
}
}
最后再主方法里面定义一个父类引用指向子类对象,就会发生多态现象,比如 :
E e=new F();
e.show();
实际调用了子类里面的show()方法 。
(10)abstractjava扩展阅读:
Java中的abstract方法和abstract类的问题:
当知道一个类的子类将不同的实现某个方法时,把该类声明为抽象类很有用,可以共用相同的父类方法,不必再定义。
抽象类和抽象方法的关系:含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法。
抽象类存在的意义是用来被继承的。一个类继承了一个抽象类,必须实现抽象类里面所有的抽象方法,否则,此类也是抽象类。
1:用abstract修饰的类表示抽象类,抽象类位于继承树的抽象层,抽象类不能被实例化。
2:用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。
abstract的规则:
1:抽象类可以没有抽象方法,但是有抽象方法的类必须定义为抽象类,如果一个子类继承一个抽象类,子类没有实现父类的所有抽象方法,那么子类也要定义为抽象类,否则的话编译会出错的。
2:抽象类没有构造方法,也没有抽象静态方法。但是可以有非抽象的构造方法。
3:抽象类不能被实例化,但是可以创建一个引用变量,类型是一个抽象类,并让它引用非抽象类的子类的一个实例。
4:不能用final 修饰符修饰。