Java面向对象编程--->继承、super、方法重写

一、继承;

        1、从动物的角度去看待继承关系;

        2、动物可以分为哺乳动物和爬行动物;哺乳动物又可以分为狗、猫、人等;爬行动物又可以              分为蛇和鳄鱼等;这就是动物世界的继承关系;我们的代码也是一样;

        3、因为我们的代码有重复的代码,可以将重复大妈抽取到父类中,从而实现代码的优化;

        4、那我们使用继承优化以后就可以实现:方便修改代码;减少代码量的结果;

        5、子类和父类是一种is-a的关系;

        6、类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模;

        7、使用继承可以提高代码的复用性

        8、extends的意思是”扩展“。子类是父类的扩展

        9、不同的叫法:超类、父类、基类、子类、派生类;

        10、我们使用继承的方法就是先编写父类,再编写子类,子类只能继承一个父类;

        11、继承的示例代码:

public class ExtendsDemo {
    public static void main(String[] args) {
        Mammal m1 = new Mammal();
        m1.puru();
        m1.eat();
    }
}
class Animal{
    String eyes = "眼睛";
    String name = "无名";
    public void eat(){
        System.out.println("动物吃东西!");
    }
}
class Mammal extends Animal{
    //哺乳动物
    public void puru(){
        eyes = "嘴巴";
        System.out.println("小动物用"+eyes+"吃奶");
    }
}

二、super关键字;

        1、super是直接父类对象的引用;

        2、可以通过super来访问父类中被子类覆盖的方法或属性;

        3、普通方法中使用:没有顺序限制,可以随便调用;

        4、构造函数中:任何类的构造函数中,若是构造函数的第一行代码没有显示调用super();那                 么Java默认都会调用super();作为父类的初始化函数,所以这里的super();代码加不加都无               所谓;

        5、super示例代码:

public class SuperDemo {
    public static void main(String[] args) {
        new ChildClass().f();
    }
}
class FatherClass{
    public int value;
    public void f(){
        value = 100;
        System.out.println("FatherClass.value="+value);
    }
}
class ChildClass extends FatherClass{
    public int value;
    public void f(){
        super.f();
        value =200;
        System.out.println("ChildClass.value="+value);
        System.out.println(value);
        System.out.println(super.value);
    }
}

三、理解继承;

        1、子类访问父类成员;访问父类构造方法在子类中使用super关键字super代表父类对象;

        2、super在子类方法中调用且必须是第一行语句

        3、子类不能继承的父类成员:①不能直接访问private成员;②子类与父类不在同包使用默认               访问权限的成员;③构造方法;

        4、多重继承关系初始化顺序:①父类属性;②父类构造方法;③子类属性;④子类构造方法

        5、使用继承需要符合is-a关系的设计使用继承;

        6、继承是代码重用的一种方式,将子类共有的属性和行为放到父类中;

        7、示例代码:

public class BusDemo {
    public static void main(String[] args) {
        Bus bus = new Bus(20);
        bus.print();
    }
}
class Car{
    private int site = 4;
    Car(){
        System.out.println("载客量是"+site+"人");
    }
    public void setSite(int site){
        this.site = site;
    }
    void print(){
        System.out.println("载客量是"+site+"人");
    }
}
class Bus extends Car{
    Bus(int site){
        setSite(site);
    }
}

四、方法重写;

        1、在子类中可以根据需要对从基类中继承来的方法进行重写;

        2、重写方法必须和被重写方法具有相同的名称、参数列表和返回值类型;

        3、重写方法不能使用比被重写方法更严格的访问权限;

        4、构造方法不被子类继承所以不能实现重写;

        5、重写示例代码:

public class OverrideDemo {
    public static void main(String[] args) {
        AnimalOne animal = new AnimalOne();
        animal.shout();
        DogOne dog = new DogOne();
        dog.shout();
    }
}
class AnimalOne{
    void shout(){
        System.out.println("发出声音!");
    }
}
class DogOne extends AnimalOne{
    void shout(){
        System.out.println("汪汪汪!");
    }
}

五、总结;

        1、通过继承可以简化类的定义,实现代码的重用;

        2、子类继承父类的成员变量和成员方法,但不继承父类的构造方法;

        3、Java中只有单继承,没有像c++那样的多继承

        4、Java需要实现多继承可以通过接口;

        5、如果定义一个父类没有使用extends,则他的父类是:java.lang.Object;

        6、方法重写的规则:方法名相同;参数列表相同;返回值类型相同或者是其子类;访问权限               不能高于父类;

        7、super只能出现在子类的方法和构造方法中;

        8、super调用构造方法时,只能是第一句;

        9、super和this不能同时出现在构造方法中;

        10、super不能访问父类中的private成员;

        11、super和this都不能在static方法中;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值