抽象类的理解及有关面试题

抽象类的概述与特点
A:不懂,太抽象了
B:抽象类特点
	a:抽象类和抽象方法必须用abstract修饰
		*abstract class 类名()
		*public abstract void eat()
	b:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是抽象接口
	c:抽象类不能实例化,那么抽象类如何实例化呢?
		*按照多态的方式,由具体的子类实例化,其实这也是多态的一种,抽象类多态
 	d:抽象类的子类
 		*要么是抽象类要么重写抽象类中的所有抽象方法

抽象类的成员特点
a:成员变量:既可以是变量也可以是常量,abstract是否可以修饰变量?不可以
b:构造方法:有
	*用于子类访问父类数据的初始化
c:成员方法:既可以是抽象的也可以是非抽象的
d:抽象类的成员方法特性
	*抽象方法,强制子类做事情,执行标准,统一规则,(理解)
	*非抽象方法,子类继承的事情,提高代码复用性


public class abdemon {
	public static void main(String[] args) {
		//Animal a = new Animal()
		//Cannot instantiate the type Animal
		//抽象类不能实例化
		//如果要抽象化必须实现(重写)抽象方法
		Animal a = new Animal() {
			public void eat() {
				// TODO Auto-generated method stub	
				System.out.println("抽象类实例化要实现抽象方法");
			}
		};
		a.eat();
		Animal b = new Cat();//由具体的子类实例化
		b.eat();
	}
	
}

abstract class Animal{
	public abstract void eat();//抽象类不能实例化
	public Animal(){	//用于子类访问父类数据的初始化
		System.out.println("父类无参构造");
	}
}
class Cat extends Animal{
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("猫吃鱼");
	}	
}


面试题
 *1一个抽象类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义
 * 可以
 * 这么做目的只有一个,就是不让其他类创建本类对象,交给子类完成
 * 2abstract不能和那些关键字共存
 * ——static和abstract//非法的修饰符组合
 * 被abstract修饰的方法没有方法体
 * 被static修饰的方法可以通过类名.调用,但是调用抽象方法是没有意义的
 * ————final和abstract
 * 被abstract修饰的方法强制子类重写
 * 被final修饰的方法不让子类重写
 * ————private和abstract
 * 被abstract修饰的方法是为了让子类看到并强制重写
 * 被private修饰的方法不让子类访问




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值