Java复习笔记7

来源:互联网 发布:无线上网数据卡怎么用 编辑:程序博客网 时间:2024/05/22 17:51
package com.lesson9.example;
/**
 * 了解abstract
 * */
/**
 * 关键字【abstract】:可以用来修饰类和方法
 * 1.abstract修饰的类叫做抽象类(abstract class),该类不能被实例化,即不能使用关键字new创建该类对象
 * 2.abstract修饰的方法叫做抽象方法(public abstract void),抽象方法只有声明部分,而没有具体的方法体{……}
 * */
/**
 * 【注意】
 * 1.抽象类不能实例化(new),抽象方法只有声明部分,没有具体的方法体
 * 2.抽象类中可以没有抽象方法,但是抽象方法必须出现在抽象类中(有抽象方法的一定是抽象类)
 * 3.抽象类只计划子类具有的功能,而不实现子类的具体功能;
 * 4.如果一个非抽象类是一个抽象类的子类,它必须实现父类的所有抽象方法
 * */
abstract class Animal{
String type = "哺乳动物";
/*public abstract void run(){}
* 报错,抽象方法只有声明部分,没有具体的方法体,因此抽象方法也没有花括号
*/
//抽象方法只能出现在抽象类中
public abstract void run();
//抽象类中可以有抽象方法和非抽象方法,而且抽象类中也可以没有抽象方法
protected void eat(){
System.out.println(type + "吃...");
}
}

class Cat extends Animal{
String type = "猫";
//非抽象类继承抽象类,必须实现父类中所有抽象方法
public void run(){  //子类实现父类抽象类时,需要实现具体的功能(具体的方法体),因此不需要abstract修饰
System.out.println(type + "在跑...");
}
}

public class AbstractExample {
public static void main(String[] args){
Animal a = new Cat();
a.run();
}
}

package com.lesson9.example;
/**
 * 了解接口
 * */
/**
 * 关键字【interface】:定义接口
 * 1.当一个抽象类中的方法都是抽象方法时,可以使用关键字interface将其定义为接口
 *     --->interface <接口名> {声明抽象方法}
 * 2.接口的作用:实现多重继承
 *     --->在java中一个类只能有一个父类,如果某个类需要继承多个类的变量或者方法,可以通过接口实现。
 *     java提供接口方式,一个类可以实现多个接口,从而获得多重继承的特性。(相当于继承多个抽象类吧?)
 * 3.接口中的方法都是默认公有抽象的(public abstract),声明抽象方法只需要返回类型和抽象方法名称就行
 * */
/**
 * 关键字【implements】 :实现接口
 * 1.当一个类实现某个接口时,需要使用关键字implements(Implements是复数形式,莫忘记)
 *     ---->class 类名 implements <接口名>, <接口名>, ... {}  
 * 2.在类中实现接口的方法时,方法的名称、返回类型、参数个数和参数类型必须与接口中的方法一致
 * 3.如果一个类实现了接口,但是没有实现接口中的所有方法,那么这个类必须是抽象类。
 *   只有抽象类可以不实现接口中所有的方法,即非抽象类必须实现接口中的所有方法
 **/
interface Cats{  //猫科动物
//接口中的方法都是默认公有抽象的(public abstract)
/*public abstract*/ void eat();//接口中声明抽象方法只需要返回类型和抽象方法名称就行
}
/**
 * 接口的访问级别:
 * 1.public interface <接口名>{……}     声明接口是公有接口,则可以被任何一个类使用
 * 2.interface <接口名>{……}     默认接口是友好的,只能被同一包中的类使用
 * */

class Lion extends Mammal implements Cats{//Lion既有Mammal的特性,也有Cats的特性(相当于多继承)
        //非抽象类必须实现接口中所有方法
public void run(){}
public void eat(){} //方法的名称、返回类型、参数个数和参数类型必须与接口中的方法一致(去掉abstract)
}

package com.lesson9.example;
/**
 * 了解抽象类和接口的区别
 * */

/*抽象类*/
/**
 * 【关键字】abstract
 * 【成员变量】可包含任意成员变量(包括各种访问级别的类成员变量和实例成员变量)

 * 【方法】可包含任意方法(包括各种访问级别的类方法和实例方法、抽象方法和非抽象方法)

 * 【使用】抽象类可以被继承(关键字extends),一个类只能继承一个父类
 * */

/*接口*/
/**
 * 【关键字】interface
 * 【成员变量】只能包含公开的静态常量(默认由public static final修饰)

 * 【方法】只能包含公开且抽象的方法(默认由public abstract修饰)

 * 【使用】接口可以被实现(关键字implements),一个类可以实现多个接口
 * */
public class Compare {
//总结:
//抽象类可以使用任意成员变量和方法
//接口有限制,必须使用公开静态的成员变量(必须是常量)和公开且抽象的方法(必须是抽象方法)
}
0 0