javaabstract类
‘壹’ java中为什么要引人abstract类和方法了
java引哗知袭入抽象类的意义:
1,为子类提供一个公共的类型;
2,封装子类中重复内容(成员变量和乱兄方法);
3,定义有抽象方法,子类虽然有不同的实现,但该方法的定义是一致的。
抽象方法:由abstract修饰的方法为抽象方法,抽象方法只有方法的定义,没有方法的实现。
抽象类:一个类中如果包含抽象方法,个i类应该用abstract关键字声明为抽猛唯象类。
抽象类不可以实例化,即使一个类中没有抽象方法,也可以将其定义为抽象类,同样,该类不可以实例化。抽象类和接口的区别:
抽象类:为了被子类继承,为子类提供了同一的方法入口;
接口:定义了一个标准(特殊的抽象类)。
‘贰’ Java中的抽象类是什么
使用了关键词abstract声明的类叫作“抽象类”。
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体
‘叁’ 怎么理解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就是抽象
用来修饰类和方法
比如
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修饰的类,在这个类中、你可以定义一些不需要具体实现的方法、也就是没有方法体的方法、这些方法叫做抽象方法、当一个类要继承这个抽象类时、就必须要实现这些抽象方法、。当你在做一个比较复杂的项目时、一些简单的方法就可以马上写出来、但一些复杂的方法、在不同的类中需要不同的实现、那么这个时候就需要用到抽象类的。。。
‘陆’ 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 class 类名 {}
特点:
1.抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
2.抽象类不能实例化
3.那么,抽象类如何实例化呢?
按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
抽象类的子类:
1.要么是抽象类
2.要么重写抽象类中的所有抽象方法
‘捌’ JAVA中abstract
2是对的
抽象类中可以没有抽象的方法,只是抽象类不能实例化。
但是一旦一个类中有抽象方法,所在class必定要是class,否则会有编译错误