/** * 抽象类 : 无法实例化,无法创建对象 * 1、什么是抽象类? * --类和类之间具有共同特征,这些共同类之间提取出来的特征就是抽象类 * --类到对象是实例化,对象到类是抽象 * --类本身是不存在的,所以抽象类无法创建对象(无法实例化) * * 2、抽象类属于什么类型? * --抽象类也属于引用数据类型 * * 3、抽象类怎么定义? * --语法: * 【修饰符列表】 abstract class 类名{ * 类体; * } * * 4、抽象类是无法创建对象,无法实例化的,所以抽象类是用来被子类继承的 * * 5、final 和 abstract 不能联合使用(一山不容二虎) * * 6、抽象类的子类也可以是抽象类 * * 7、抽象类虽然无法实例化,但是抽象类里有构造方法,这个构造方法供子类使用 * * 8、抽象类关联到一个概念: 抽象方法。什么是抽象方法呢??? * --抽象方法表示没有实现的方法,没有方法体的方法 * 例如::public abstract void doSome(); * 抽象方法的特点是: * 特点1:没有方法体,以分号结尾 * 特点2:前面修饰符列表里有abstract关键字 * * 9、抽象类中不一定有抽象方法,但是抽象方法必须存在于抽象类中 * */
public class ChouXiangLei {
public static void main(String[] args){
//创建抽象类对象
//Account act=new Account();//编译报错,Account是抽象的,无法创建对象,无法实例化
//创建子类对象,来继承抽象类
//CreditAccount cda=new CreditAccount();
}
}
//银行账户类(这是一个抽象类)
abstract class Account{
//非抽象方法
public void doOther(){ }
//抽象方法
public abstract void withdraw();
}
//子类继承抽象类,子类可以实例化对象
/*
class CreditAccount extends Account{
}
*/
---------------------------------------------------------------------------------------------------------------------------------
import java.sql.SQLOutput;
//面试题::java语言中,凡是没有方法体的方法都是抽象方法。(x)
//Object类中就有很多方法没有方法体,他们都是抽象方法,都是以“;”结尾的。
/**
* 抽象类:
* 1、抽象类中不一定有抽象方法,但是抽象方法必须存在于抽象类中
*
* 2、重要结论:*****
* 一个非抽象的类去继承抽象类,必须将抽象类中的方法实现了
*
* 3、抽象子类可以去继承抽象父类,并继承抽象父类的抽象方法,
* 非抽象子类要想去继承抽象父类的抽象方法,就需要在非抽象子类中,将抽象父类里的抽象方法进行重写(覆盖),也叫实现。
*
*/
public class abstractTest {
public static void main(String[] args){
//使用多态
//父类型引用子类型对象
Animal a=new Bird();//面向抽象编程
a.move();
}
}
//动物类(抽象类)
abstract class Animal{
//抽象方法
public abstract void move();
}
//子类(非抽象)
/**
class Bird extends Animal{
//分析错误: 父类是抽象的,里面有一个抽象方法,
// 子类是非抽象的,并且子类去继承父类
// 抽象方法只能出现在抽象类中,所以会编译报错
}
*/
//把子类也设置成抽象类,就可以继承抽象的父类了 还有二种写法
/*
class Bird extends Animal{
重写(覆盖)从父类中继承过来的方法,把抽象方法实现了
//将抽象类中的方法实现了
public void move(){}
}*/
class Bird extends Animal{
public void move(){
System.out.println("鸟在飞!!!");
}
}
/**
* 这里是把子类型设置成抽象类 再去继承抽象父类
*
* abstract class Bird extends Animal{
* }
*/