【008】
1. 抽象类和抽象方法
(1) 简述抽象方法的特征
1、抽象方法只有声明,没有方法体并且以分号结尾
2、抽象方法只能声明在抽象类中(含有抽象方法的类必须是抽象类)
3、抽象类中可以包含0个或多个抽象方法
4、抽象方法必须被子类实现
5、如果子类不能实现父类中的抽象方法,那么子类也必须是抽象类
总结:abstract可以修饰类和方法
(2) 什么情况下使用抽象方法?
通过抽象方法,可以避免自雷设计的随意性,通过抽象类,我们就可以做到严格限制子类的设计,使子类更加通用(程序的可扩展性和可维护性)
(3)什么情况下使用抽象类?
父类的名称比较抽象,创建对象无意义
//抽象类abstract class Animal {
abstract public void shout(); //抽象方法}
class Dog extends Animal {
//子类必须实现父类的抽象方法,否则编译错误 public void shout() {
System.out.println("汪汪汪!");
}
public void seeDoor(){
System.out.println("看门中....");
}
}
//测试抽象类public class TestAbstractClass {
public static void main(String[] args) {
Dog a = new Dog();
a.shout();
a.seeDoor();
}
}
(3) 下列选项中,关于Java的抽象类和抽象方法说法正确的是。(AC)
A 抽象类中可以含有0个或多个抽象方法
B 抽象类中不可以有构造方法
C 一个类中若有抽象方法,则这个类必为抽象类
D 子类必须重写父类所有的抽象方法
(4) 在Java中关于abstract关键字,以下说法正确的是。(AB)
A abstract类中可以没有抽象方法
B abstract类的子类也可以是抽象类
C abstract方法可以有方法体
D abstract类可以创建对象
2. 接口的详解
(1) 接口中可以包含哪些内容?
1、抽象方法
2、非抽象方法(JDK1.8新特性,必须使用default关键字修饰)
3、属性(public static final)常量,public static final可以省略不写
4、接口中不可以包含构造方法,因为接口不是类
( JDK1.7之前,接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法。5. JDK1.8后,接口中包含普通的静态方法)
(2) 接口和类的关系?
1、类去实现接口中的抽象方法,是实现关系implements
2、一个类实现继承关系,又存在实现关系,extends在前还是implements在前?
继承- 父子关系-亲爹
实现-实现关系-干爹
Extends在前implementes在后
3、如果父类与接口中有完全相同的方法(一模一样),子类实现、实现类所实现的方法是父类的还是接口的?
父类优先于接口,子类实现的是父类中的方法
4、如果父类中与接口中有同名方法,对子类\实现类有什么要求呢?
父类与接口中的方法,在子类/实现类中构成方法的重载
(3) 在Java接口中,下列选项中属于有效的方法声明是。(A)
A public void aMethod( );
B final void aMethod( );
C void aMethod(){ }
D private void aMethod( );
(4) 接口定义正确的说法是。(C)
A接口中只能定义常量和抽象方法
B接口中可以定义普通方法和普通变量
C接口可以被new,抽象方法不行
D接口不可以被继承,只能被实现,也可以被多个类实现
3. 使用接口的意义
(1) 接口有哪些特征?
接口的传递性
接口的继承性(多继承)
(2) 使用接口实现多态的步骤?
接口类型(引用数据类型)指向实现类的对象
1、编写接口
2、实现类实现接口中的方法
3、接口(类型)new实现类对象
(3) 以下代码的下划线处填入正确的关键字。
public interface Fly {
public void flying();//飞行的能力}
class AirPlane __A___ Fly{
@Override
public void flying() {
System.out.println("飞机在祖国的蓝天上自由飞翔...........");
}
}
A implements
B extends
C public
D override
(4) 接口定义了“做什么”,而实现在负责完成“怎么做”,体现了功有和实现分离的原则,接口和实现之间可以认为有一种什么关系。B
A is-a的关系
B has-a的关系
C 没有关系
D 以上均不正确
4. 内部类详解
(1) 内部类有哪些特点?
1、内部类作为外部类的成员,可以直接访问外部类的成员(包括private成员),反之则不行
2、内部类作为外部类成员,可声明为private,默认,protected或者public
3、内部类成员只有在内部类的范围之内是有效的
4、用内部类定义在外部类中不可访问的属性。这样就在外部中实现了比外部类的private还要小的访问权限
(2) 什么是内部类
一个类定义在另一个类的内部,该类就称为内部类
(3) 内部类可以分哪几类?
内部类主要分为成员内部类(非静态内部类、静态内部类)、匿名内部类、局部内部类
类文件 外部类$内部类.class
一、非静态内部类(外部类里使用非静态内部类和平时使用其他类没什么不同)</