美文网首页
继承,方法的重写,super关键字

继承,方法的重写,super关键字

作者: 临木有希 | 来源:发表于2018-08-07 12:22 被阅读0次

(1)继承是发生在多个类之间
(2)继承使用关键字extends
(3) JAVA只能单继承,允许多层继承
(4)被继承的类叫父类(超类),继承父类的类叫子类(派生类)
(5)在父类中的非私有属性和方法可以被子类继承
(6) protected(受保护的访问权限修饰符),修饰的属性或方法可以被子类继承
(7)构造方法不能被继承
(8)创建对象会调用构造方法,调用构造方法不一定就是创建对象
(9)实例化子类对象,会先调用父类的构造方法,如果父类中没有默认的构造方法,那么 子类必须显示的通过super..来调用父类的带参构造方法,super也只 能在子类构造方法中的第一句
继承的好处:
1、提高代码的复用性
2·提高代码的维护性
3、让类与类之间产生关系,是多态的前提继承的缺点:
增强了类与类之间的耦合性
开发原则:高内聚,低耦合

image.png

面试题:overloading和overriding的区别?
overloading:方法的重载,方法名相同,参数列表不同,与返回值无关,发生在同一个类中
overriding:方法的重写,发生在子父类中,方法名相同,参数列表相同,返回值相同,子类的访问修饰符要大于或等于父类的访问修饰符,子类的异常声明必须小于或等于父类的异常声明,如果方法被private,static,final修饰,那么不能被重写

image.png image.png
/**
    继承:从已有的类创造新类的过程
    继承一个父类,只能继承非私有的数据(属性和方法)
    protected访问权限修饰符,在继承关系中使用,在父类中使用protected修饰的属性和方法可以被子类继承
    创建子类对象时,父类的构造方法也会被调用,why?
        因为子类要使用父类的数据,那么就要通过父类的构造方法来初始化数据
        如果创建子类对象时使用默认构造方法,那么父类的默认构造方法也会被调用
        创建子类对象时会调用父类的默认构造方法
        
    当父类中没有无参构造方法时,子类必须显示的调用父类的带参构造方法,使用super()
    可以在子类中显示的使用super(...),调用父类的构造方法,只能出现在第一句

    面试题:overloading和overriding的区别?
    overloading:方法的重载,方法名相同,参数列表不同,与返回值无关,发生在同一个类中
    overriding:方法的重写,发生在子父类中,方法名相同,参数列表相同,返回值相同,子类的访问修饰符要大于或等于父类的访问修饰符,
                子类的异常声明必须小于或等于父类的异常声明,如果方法被private,static,final修饰,那么不能被重写


*/
public class Test1{
    public static void main(String[]args){
        
        HomeDog homeDog = new HomeDog("旺财");
        homeDog.print();
        homeDog.eat();
    
    }
}

class Dog{
    protected String name;
    protected String sex;
    public Dog(String name,String sex){
        this.name = name;
        this.sex = sex;
        System.out.println("我是Dog的构造方法");
    }
    //protected void eat()throws Exception{//抛出一个异常
    protected void eat(){
        System.out.println("吃饭");
    }
}
class HomeDog extends Dog{
    public HomeDog(String name){
        super(name,"公");//只能在第一句
        System.out.println("我是HomeDog的构造方法");
    }
    public void print(){
        //super.属性  表示调用父类的属性,如果是继承过来的属性,则super可以省略
        System.out.println(super.name+",我是一只家狗");
    }
    //重写父类的方法
    public void eat(){
        super.eat();//调用父类的方法(此处会打印出“吃饭”)
        System.out.println("我是家狗,我喜欢吃骨头");
    }
}

class HuskyDog extends Dog{
    public HuskyDog(String name,String sex){
        super(name,"母");
        System.out.println("我是HuskyDog的构造方法");
    }
    
    public void show(){
        System.out.println(name+"我是哈士奇,我能跳舞");
    }
}

image.png

相关文章

  • java面向对象

    方法重载 方法重写 继承父类( 关键字: super、extends) super 关键字1.用super调用父类...

  • Swift-8.继承

    本章包含内容: 继承的概念和语法 super关键字 重写方法 重写属性 重写属性时的限制 重写属性观察器 用fin...

  • 5-Java面向对象-继承(下)

    前面我们学习了继承的概念和特点;继承的代码实现;方法重写;访问修饰符的分类及作用;super关键字的使用;继承的初...

  • Java继承与多态

    子类与父类、子类的继承性成员变量的隐藏与方法重写super与final关键字对象类型转换继承与多态抽象方法与抽象类...

  • 4、Typescript类的继承和修饰符

    1、ts中类的定义使用关键字class、继承使用 extends 和 super 2、子类方法名和父类相同表示重写...

  • 继承,方法的重写,super关键字

    (1)继承是发生在多个类之间(2)继承使用关键字extends(3) JAVA只能单继承,允许多层继承(4)被继承...

  • Java学习——day 04

    主要内容 继承 重写 super关键字 组合 final关键字 访问控制符 多态 笔记详情 1. 继承 在Java...

  • 类的继承

    类的继承通过extends关键字,子类继承了父类的所有属性和方法 super关键字super() 作为函数使用su...

  • 多继承以及MRO顺序

    1、单独调用父类的方法 2、多继承中super调用所有父类的被重写方法 3、单继承中super() 总结 supe...

  • ES6学习笔记(二):教你玩转类的继承和类的对象

    继承 程序中的继承: 子类可以继承父类的一些属性和方法 super关键字 super关键字用于访问和调用对象父类上...

网友评论

      本文标题:继承,方法的重写,super关键字

      本文链接:https://www.haomeiwen.com/subject/uwbovftx.html