第三课 类的继承

                                                                                             第三节   类的继承

1 类的继承

  1.1 类继承的作用:免去重写代码的烦恼     单根继承

                   继承了父类中属性与方法,子类内还可以再定义它自己所特有的方法。

   1.2 类继承的结构:访问限定符   class 子类名 extends 父类名{}

                如:public class UNStudent extends Student {}

  1.3 方法的重写:子类重写父类中的方法,保持方法的定义不变,但方法内部实现同父类中不同(子类可以重写父类的方法也可以不重写,而实现接口的类必须重写接口中的方法)

           子类的对象到底调用父类中的方法还是子类的方法:如果子类重写了父类中的方法,调用的就是子类中的实现,否则就调用父类中的方法

1.4自动转型:指的是子类对象会自动转变为父类类型(反过来不可以)

        如: Student uns=new UNStudent();

            如果子类重写了父类中的方法,调用的就是子类中的实现,否则就调用父类中的方法。如  uns.study();(UNStudent中重写的study())

            当子类对象自动转型为父类类型时,通过父类类型变量的引用,只能调用己在父类中定义的方法,不能调用子类中自己的方法。

1.5 多态:同一类型的对象,但在具体调用时,由与继承与重写机制,方法执行的结果不同

        如:

         public void teacStu(Student st1,Student st2){

st1.study();

st2.study();

}

        public static void main(String[] args) {

 //父类类型变量名用来引用子类对象

        Student us=new UNStudent();

          us.setName("我是大学生");          

          Student cs=new ComStudent();

          cs.setName("计算者");          

          //创建一个老师对象

          Teacher tc=new Teacher();

          //传入两个学生对象

          tc.teacStu(us, cs);

}

2  接口的使用

2.1类是对所有对象所共有的方法和属性的定义,定义一个类无非是两个用途:或者生成对象调用其方法,或者用作给其它类来继承。

       

   2.2接口的定义:要求子类必须重写父类中的方法  ,接口中也可以什么都不定

  不能直接使用接口创建对象

 结构   public interface 接口名{

     public static final  属性类型=一个常量;//必须赋值常量,不可再变

     Public abstract void 方法名();//无方法体 结尾注意为;

}

2.3 接口的实现   implements  接口也可称做实现类的父类,实现类对象自动转型为接口类型,多态机制同子父类继承时是同样的原理。  

      

    

public class ImpOval implements NetJavaShape {

//实现接口中的方法

public void draw(int x1,int y1,int x2,int y2){

System.out.println("我画的是圆形!");

//接口中的属性定义可做为常量使用

System.out.println("出品人: "+NetJavaShape.compName);

}

}

一个类可以实现多个接口 public class ImpOval implements NetJavaShape,OtherShape{}

ImpOval类的对象即可以是NetJavaShape的,也可以是OtherShape类型的。

当一个类实现多个接口,自动转为某个接口类型时,就只能调用在其接口中定义的方法。

2.4接口的继承  extends  一个接口同样可以继承多个接口

 

3抽象类的使用

 3.1 抽象类的定义:抽像类是介与接口和类之间的定义:抽像类中,可以定义己实现的方法,也可以定义像接口中没有实现的方法---继承的子类就必须实现。

      

public abstract class ABSShape {

//抽像方法定义:继承的子类必须实现

public abstract void draw();

//可以定义己实现的方法

public void setColor(int c){

this.color=c;

}

public int getColor(){

return this.color;

}

private int color;

}

抽像类中定义的方法,如没有实现,前面就必须加上abstract关键字,即抽像方法。

字类中,必须实现抽象类中的abstract方法

子类只能同时继承一个抽象类,这于接口的implements不同。

3,2 抽象类的使用:抽像类也不能直接创建对象。抽像类的做用常用做“适配器”----因为如果无论一个接口中定义有多少方法,子类都必须实现。先抽象类重写接口中的所有方法(可以写成空的方法 所有方法后面加{}而不是;),而继承一个抽象类不一定重写所有方法只写自己需要的就可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值