《第4章-面向对象编程(中).ppt》由会员分享,可在线阅读,更多相关《第4章-面向对象编程(中).ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本讲目标本讲目标掌握掌握this关键字关键字掌握掌握private、protected和和public修饰符修饰符掌握方法重载及构造方法重载掌握方法重载及构造方法重载理解继承原理与机制理解继承原理与机制掌握类继承的用法掌握类继承的用法理解成员变量的隐藏理解成员变量的隐藏掌握成员方法的覆盖掌握成员方法的覆盖/重写重写第第4章章 面向对象编程(中)面向对象编程(中)this关键字关键字vthis代表代表“当前对象当前对象”,相当于相当于“我我”。可以用于。可以用于调用当前对象的成员变量和成员方法。调用当前对象的成员变量和成员方法。v例如:例如:v /调用当前对象成员变量调用当前对象成员变量weig
2、htv this.weight=120;v /调用当前对象的调用当前对象的eat方法方法v this.eat();private、protected和和public修饰符修饰符vprivate、protected和和public修饰符可以修饰修饰符可以修饰成员成员变量,变量,也可以修饰也可以修饰成员方法成员方法。主要用于。主要用于控制控制成员成员变量或成员方法的变量或成员方法的访问权限访问权限。当然,成员变量和。当然,成员变量和成员方法成员方法也可以没有修饰符也可以没有修饰符。v例如:例如:private String name;v public void eat()v v 几种修饰符的访问权
3、限(几种修饰符的访问权限(重点、理解重点、理解)()()private 修饰成员变量或成员方法时,修饰成员变量或成员方法时,表示该成员变量或成员方法表示该成员变量或成员方法只能在类内部访只能在类内部访问或调用问或调用。()()public 修饰成员变量或成员方法时,修饰成员变量或成员方法时,表示该成员变量或成员方法表示该成员变量或成员方法可以在任何地方可以在任何地方访问或调用访问或调用。几种修饰符的访问权限(几种修饰符的访问权限(重点、理解重点、理解)()()如果如果成员变量或成员方法成员变量或成员方法没有任何修饰没有任何修饰符符,表示该成员变量或成员方法能,表示该成员变量或成员方法能在类内部
4、在类内部访问或调用访问或调用、被同一个包中的类访问或调用被同一个包中的类访问或调用。()()protected 修饰成员变量或成员方法修饰成员变量或成员方法时,表示该成员变量或成员方法时,表示该成员变量或成员方法在类内部访在类内部访问或调用问或调用、被同一个包中的类访问或调用被同一个包中的类访问或调用、被类的子类访问或调用被类的子类访问或调用。几种修饰符的访问权限(几种修饰符的访问权限(重点、理解重点、理解)()()如果如果成员变量或成员方法成员变量或成员方法没有任何修饰没有任何修饰符符,表示该成员变量或成员方法能,表示该成员变量或成员方法能在类内部在类内部访问或调用访问或调用、被同一个包中的
5、类访问或调用被同一个包中的类访问或调用。()()protected 修饰成员变量或成员方法修饰成员变量或成员方法时,表示该成员变量或成员方法时,表示该成员变量或成员方法在类内部访在类内部访问或调用问或调用、被同一个包中的类访问或调用被同一个包中的类访问或调用、被类的子类访问或调用被类的子类访问或调用。方法重载(方法重载(重点、理解重点、理解)v方法重载方法重载(method overloading)是指是指同一个类中的多个方法有同一个类中的多个方法有名字相同名字相同、返返回类型相同回类型相同,但是这些方法的,但是这些方法的参数不同参数不同(参数个数不同参数个数不同或或参数类型不同参数类型不同)
6、,我),我们这些方法是重载关系。们这些方法是重载关系。方法重载(方法重载(重点、理解重点、理解)v例如:例如:public void eat()v v v public void eat(int givenCount)v v 上面两个方法为上面两个方法为重载关系重载关系构造方法重载构造方法重载v构造方法是构造方法是特殊的方法特殊的方法,因此也存在,因此也存在重载重载的构造方法的构造方法。v例:例:public Dog()v .v v public Dog(int weight)v .v v 上面两个构造方法则是上面两个构造方法则是重载关系重载关系。类的继承类的继承(重点、理解重点、理解)uu继
7、承是一种由继承是一种由已有的类已有的类创建创建新类新类的机制。的机制。uu利用继承,可以先创建一个利用继承,可以先创建一个共有属性共有属性的一般类,的一般类,根据该一般类再创建具有根据该一般类再创建具有特殊属性特殊属性的新类,的新类,新类新类继承一般类的状态(属性)和行为(功能),并继承一般类的状态(属性)和行为(功能),并根据需要增加它自己的新的状态和行为。根据需要增加它自己的新的状态和行为。uu 由继承而得到的类称为由继承而得到的类称为子类(派生类),子类(派生类),被继被继承的类称为承的类称为父类(基类或超类)。父类(基类或超类)。uu Java不支持多重继承不支持多重继承(子类只能有一
8、个父类)。(子类只能有一个父类)。继承继承父父 类类 子类子类 父类父类/子类是子类是相对的相对的Cow类Lion类Tiger类类Animals类Carnivorous类Herbivorous类Coat类在类的声明中,可以通过在类的声明中,可以通过extends关键字关键字来来让该类继承某一个类。如:让该类继承某一个类。如:public class Student extends People 如果一个类的声明中没有使用如果一个类的声明中没有使用extends 关键字,关键字,这个类被系统这个类被系统默认为默认为是是Object的子类的子类,Java中中所有类都是所有类都是Object类的直接
9、子类或间接子类类的直接子类或间接子类。Object 是包是包java.lang 中的类。中的类。继承的用法(继承的用法(重点、掌握重点、掌握)uu类的核心部分是成员变量和成员方法。因此,类的核心部分是成员变量和成员方法。因此,子类可以从父类继承到成员变量和成员方法。子类可以从父类继承到成员变量和成员方法。uu子类从父类继承到成员变量和成员方法,子类从父类继承到成员变量和成员方法,就就好象这些成员变量和成员方法是在子类中直好象这些成员变量和成员方法是在子类中直接定义一样,接定义一样,可以在子类中可以在子类中直接使用直接使用。子类可以从父类继承到什么?子类可以从父类继承到什么?u答案当然否定的,这
10、得看答案当然否定的,这得看父类中成员变父类中成员变量和成员方法的修饰符量和成员方法的修饰符,以及,以及子类的父子类的父为的位置关系为的位置关系。子类可以从父类继承到任何成员变子类可以从父类继承到任何成员变量和成员方法吗?量和成员方法吗?uu()如果子类和父类在()如果子类和父类在同一个包中同一个包中,则子,则子类会类会继承继承父类中父类中不是不是private的成员变量和成的成员变量和成员方法员方法。uu()()如果子类和父类在如果子类和父类在不同一个包中不同一个包中,则,则子类会子类会继承继承父类中的带有父类中的带有protected、public修饰符的修饰符的 成员变量和成员方法。成员变
11、量和成员方法。子类从父类继承的原则(子类从父类继承的原则(理解理解)u如如果果子子类类定定义义了了和和从从父父类类继继承承到到的的某某一一成成员员变变量量相相同同的的成成员员变变量量时时,子子类类就就会会隐藏隐藏继承的成员变量继承的成员变量。子类对父类成员变量的隐藏(子类对父类成员变量的隐藏(理解理解)uu同同理理,子子类类也也可可以以隐隐藏藏继继承承的的成成员员方方法法,这我们称作这我们称作方法重写方法重写/覆盖覆盖(Override)。)。uu方方法法重重写写是是指指:子子类类中中定定义义一一个个成成员员方方法法,并并且且这这个个方方法法的的名名字字、返返回回类类型型、参参数数个个数和类型数和类型与从父类继承的方法与从父类继承的方法完全相同完全相同。子类对父类成员方法的覆盖(子类对父类成员方法的覆盖(理解理解)创建一个狗类(Dog),具体如求如下:v1)定义一个私有成员变量name,一个公有的成员变量的love,一个默认的成员变量height;v2)定义一个私有成员方法speak(此方法无参数,无返回值,仅打印:狗狗会讲话),一个公有成员方法bark(此方法无参数,无返回值,仅打印:汪汪汪);v3)重载成员方法bark(形式自由发挥);v4)重载Dog类的构造方法,要求通过此构造方法可以直接初始化狗对象的成员变量。
限制150内