关闭

JAVA类的继承,封装,多态,以及接口的一些信息

标签: java继承多态class
239人阅读 评论(1) 收藏 举报
分类:
JAVA类的相关信息:


1.类的继承,Java只支持单一继承,也就是只有一个父类,利用extends 关键字继承,例如:
class A{ };
class B extends A{ };
class C extends A,B{ };//这是错误的,不能同时继承多个父类;
但是Java中允许多层继承:
class A{ };
class B extends A{ };
class C extends B{ };


2.如果在子类中重写了父类的方法后,要再次使用父类的方法,那么要用super.方法名();


3.如果子类的构造方法中没有显式地调用父类构造方法,也没有使用this关键字调用重载的
其它构造方法,则系统默认调用父类无参数的构造方法,相当于省略了super();语句


4.在子类的构造方法中可使用语句super(argument_list)调用父类的构造方法,但必须作
为构造方法的第一条句。


5.用关键字abstract修饰的类称为abstract类(抽象类);
   它的特点:和普通类相比,abstract类可以有abstract方法。对于abstract方法,只允许声明,
不允许实现,而且不允许使用final修饰abstract方法。对于abstract类,我们不能使用new运算
符创建该类的对象,需产生其子类,由子类创建对象,如果一个类是abstract类的子类,它必须
具体实现父类的abstract方法,这就是为什么不允许使用final修饰abstract方法的原因。


6.接口声明:接口与类属于同一层次,实际上,接口是一种特殊的抽象类。在Java中接口定义同类
的定义很相似,分为接口声明和接口体两部分。接口通过interface关键字声明,接口体中只能包
含全局常量和抽象方法,接口的变量自动是public static final属性,接口中的方法自动是
public abstract属性,并没有方法体,以分号结尾。
格式: [public] interface 接口名 [extends 父接口名表]{ 接口体;}
接口体包含常量定义和方法定义,
 
例如:
 
interface IA{
 
   public static final int MAX=100; //全局常量
 
   public void print();  //抽象方法
 
   public abstract int sum();    //抽象方法
 
}
 
注:
 
1)   public interface:公开接口,与类相似,一个文件只能有一个public接口,且与文件名相同。
 
2)   在一个文件中不可同时定义一个public接口和一个public类。
 
3)   接口和接口之间可以定义继承关系,并且接口之间允许实现多重继承。
例:interface IC extends IA,IB{   };//允许多重实现


7.一个类除了继承另一个类之外,还能实现接口:例如
class IAImpl extends java.util.Arrylist implement IA,IB{}
1)   一个类实现了某个接口,则必须实现接口中的所有方法,如果没有实现接口中的所有方法,
则此类一定是抽象类。因为一个类实现接口,相当于它继承一个抽象类。
 
2)   接口中方法可不写public,但在子类中实现接口的过程中public不可省。(如果省去public则
在编译的时候提示出错:对象无法从接口中实现方法,相当于降低了重写方法的权限。)


3)   如果父类实现了某个接口,子类不需要使用implements关键字声明就可以使用此接口。
 
4)   接口也可以用于定义对象


接口使用案例:
interface IDetail{  
       public String detail();  
}  
class Teacher implements IDetail {  
       private String name;  
       private int age;  
       private String type;  
       public Teacher(String name, int age, String type) {  
              this.name = name;  
              this.age = age;  
              this.type = type;  
       }  
      // 返回教师详细信息  
       public String detail() {  
              return "姓名:" + name + ",年龄:" + age + ",教师类型:" + type;  
       }  
}  
class Printer {  
       public void print(String s) {  
              System.out.println(s);  
       }  
}   
class MedicalInspection implements IDetail{  
   
       Printer printer = new Printer();  
       // 返回体检中心信息  
       public String detail() {  
              return "这里是滨州市体检中心,欢迎您的到来!";  
       }  
   
       // 打印detail信息  
       public void printDetail(IDetail d) {  
              printer.print(d.detail());  
       }  
}  
public class ExDemon03 {  
   
       public static void main(String[] args) {  
   
              MedicalInspection mi=new MedicalInspection();  
              IDetail t = new Teacher("李四", 33, "Java");  
   
              mi.printDetail();// 打印教师信息  
                mi.printDetail(mi);// 打印中心信息  
       }  
}  
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:549次
    • 积分:28
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论