Java.面向对象.02.继承、向上造型等

    xiaoxiao2021-03-25  45

    一、方法:

        1.方法的签名:

                 方法名+参数列表;

        2.方法的重载:

                 发生在一个类中,方法名称相同,参数列表不同;

                 编译器在编译时回根据签名自动绑定调用方法;

        3.构造方法:

                ①给成员变量赋初值;

                ②与类同名,没有返回类型;

                ③在创建对象是被自动调用;

                ④若自己不写构造方法,则编译器默认一个无参构造方法;

                     若自己写了构造方法,则不再默认构造;

                ⑤构造方法可以重载;

         4. this:

                  指代当前对象,那个对象调方法指的就是哪个对象;只能用在方法中,方法中访问成员变量之前默认有个this;

    二、继承:

             1.作用:

                         实现代码的复用、避免代码重复;

             2.通过extends来实现继承

             3.父类/基类:所有子类所共有的属性和行为;

                 子类/派生类:子类所特有的属性和行为;

             4.一个父类可以有多个子类;

                一个子类只能继承一个父类-------单一继承;

             5.继承具有继承性;

             6. Java规定:

                          构造子类之前必须先构造父类;

                          若子类自己不调父类构造,则编译器默认在子类构造第一句通过super()调用父类的无参构造

                          若子类自己调了父类构造,则不再默认提供;

                          super()调父类构造必须位于子类构造的第一行;

    三、向上造型:

              ①父类型的引用指向子类的对象;

              ②能点出什么,看引用类型;

    四、重写与重载的区别:   1.重写(Override):           ①发生在父子类中,方法名相同,参数列表相同,方法体不同           ②重写遵循"运行期"绑定,看对象的类型来调用方法   2.重载(Overload):            ①发生在一个类中,方法名相同,参数列表不同,方法体不同            ②重载遵循"编译期"绑定,看引用的类型来绑定方法

    public class test01 { public static void main(String[] args) { Animal animal1 = new Animal(); Animal animal2 = new Animal("red",2); Animal animal3 = new Dog();//向上造型 ; animal3不能用子类的type属性、job方法 animal3.color="green";//父类型的属性color animal3.age=3;//父类型的属性age; animal3.sayWord();//父类型的方法sayword Cat cat = new Cat(); cat.job(); } } /**动物*/ class Animal{ String color;//成员变量 int age; Animal(){//无参构造函数;如果没有以下三个函数会有一个默认无参构造函数 } Animal(String color){//重载 this.color=color; } Animal(String color,int age){//重载 this.color=color; this.age=age; } void sayWord(){ System.out.println("我是动物"); } } /**狗*/ class Dog extends Animal{//Dog继承Animal String type; void sayWord(){//重写父类Animal中的sayWord super.sayWord(); System.out.println("而且是人类忠实的朋友"); } void job(){ System.out.println("我的职责是看护庭院"); } } /**猫*/ class Cat extends Animal{ String type; void sayWord(){ System.out.println("我是一只有灵性的猫"); } void job(){ System.out.println("我的职责是抓老鼠"); } }

           

    
    转载请注明原文地址: https://ju.6miu.com/read-34346.html

    最新回复(0)