Java4Android学习 (第23~24集)抽象类

第23集  抽象类和抽象函数
主要内容
1.抽象函数的语法特征.
2.抽象类的语法特征.
3.抽象类的作用.

问1:什么是抽象函数?
只有函数的定义,没有函数体的函数被称为抽象函数.
abstract void fun();

问2:什么是抽象类?
使用abstract定义的类被称之为抽象类.
1.抽象类不能够生成对象.
2.如果一个类当中包含有抽象函数,那么这个类必须声明为抽象类.
3.如果一个类当中没有抽象函数,那么这类也可以被声明为抽象类.

问3:抽象类可以有构造函数么?
条件:
1.抽象类不能生成对象.
2.构造函数用于生成类的对象.
结论: 如果从这个片面的两点来看,抽象类没有构造函数.
 但是. 抽象类可以有构造函数,这个构造是为子类服务的.
abstract class Person23{
	String name;
	int age;
	
	Person23(){
		System.out.println("person构造函数");
	}
	
	Person23(String name ,int age){
		this.name = name;
		this.age = age;
		}
	void introduce(){
		System.out.println("名字是" +name+age);
	}
	
	abstract void eat(); 
}
//********************************************************************************************//
//这样可以能过编译.
//abstract class Chinese extends Person23{
//	 
//}
//********************************************************************************************//
//这样可能通过编译. 
  class Chinese extends Person23{
 	Chinese(){
 		System.out.println("chinese构造函数");
 	}
 	Chinese(Sting name,int age ,String address){
 		super(name,age);
 		this.address = address;
 		}
 	
	 void eat(){
	 	System.out.println("用筷子吃饭");
	}
	
}

//********************************************************************************************//

class TestChinese{
	public static void main(String args[]){
		Person23 p = new Chinese();
		p.eat(); 
	}
}

问4:抽象类不能生成对象,那定义这个类有什么用呢?
  抽象类就是用来作父类的,所以抽象类一般作基类。  抽象方法必须在子类中实现,即在子类中复写。
第24集  为什么用抽象类
抽象类表达的是一种概念.
//*如果一段代码在语意上是有错误的,那么在语法上也应该是有错误的.这是现代编程理论强调的一点,但是还没有那种语言完全实现过*///
abstract class Printer{
	void open(){
		System.out.println("open");
	}
	
	void close(){
		System.out.println("close");
	}
	
	void print(){
		
	}
	//abstract void print();//抽象函数
	//在语意上有错误,我们让它在语法上也有错误.
	//语法上的错误更加容易检查出来.
}
//*********************************************************************************//
// 该打印机为喷墨打印机进行打印
class HPPrinter extends Printer{
	void print(){
		System.out.println("使用喷墨打印机进行打印");
    }
}
//*********************************************************************************//
//该打印机为针式打印机 
class CanonPrinter extends Printer{
	void print(){
		System.out.println("使用针式打印机进行打印");
    }
}
//*********************************************************************************//
class Test{
	public static void main(String args[]){
		Printer p1 = new HPPrinter();//向上转型,子类对象赋给父类的引用.
		p1.open(); 
		p1.print();
		p1.close();
		
		Printer p2 = new CanonPrinter();//向上转型,子类对象赋给父类的引用.
		p2.open();
		p2.print();
		p2.close();
	}
}
为什么要使用抽象类?
如上例,如果不使用抽象类,子类就可能忘记实现父类的print()方法.

那么就会隐藏错误.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值