美文网首页
JavaSE之继承

JavaSE之继承

作者: 金石_832e | 来源:发表于2019-03-11 18:38 被阅读0次

简述继承

Java中是单继承模式:

一个父类可以有多个子类,但是一个子类只能有一个父类。

继承:public class A extends B{}

A类称为子类,B类称为父类。A类具有B类拥有的属性和方法,除了构造方法、私有属性和私有方法。子类可以添加自由独有的属性和方法来拓展功能。

  • 若子类也声明了与父类同名的属性并赋值,子类对象创建后,该属性的值为该子类的属性。
  • 若子类没有声明与父类同名的属性,子类对象创建后,该属性的值为该父类的属性值。
class Father{
String name ="父亲";
}
class Son extends Father{
String name ="儿子";
}
public class Demo{
public static void main(String args[]){
Son s =new Son();
System.out.println(s.name);
}
}
//结果为:儿子
//若注释掉String name ="儿子"; 结果为:父亲
继承带来的优点:

是一种代码重用的重要手段,也是实现“开闭原则”的基础,同时子类还可以添加自己独有的属性和方法,来拓展父类功能开闭原则,对拓展开放,对修改关闭。


重写和重载

重载:同一个类中,同名不同参的方法叫做重载。(编译时多态,静态多态,overload)
重写:子类中,同名、同参且返回值相同的方法叫做重写。子类的修饰符范围不小于父类的修饰符范围。(运行时多态,override)

class Employee {
    public Employee() {
    }

    void show() {
        System.out.println("父类show方法");
    }

    void show(String word) { // 重载
        word = "父类重载show方法";
        System.out.println(word);
    }
}


class Officer extends Employee {
    public Officer() {
        super();//调用父类构造
    }

    void show(String word) { // 重写
        word = "子类重载show方法";
        System.out.println(word);
    }
}

public class Demo1 {
    public static void main(String[] args) {
        Officer o = new Officer();
        o.show();
        o.show("haha"); 
    }
}

在重写父类的构造方法时,一定要看清父类的构造方法是否重载,根据需求写出子类的构造方法。(看清有参无参)

super作用:

  • ①super(args)调用父类其它构造器,只能用在子类构造器第一行,只能用一次。
  • 若父类同时拥有有参和无参构造器时,super只能写一个。(按照需求)
  • ②super.属性名或super.方法名。调用父类对象的属性和方法。
  • ③super用法与this用法一样,只不过this表示当前类对象。super表示父类对象。

面试题:请描述子类实例化过程

class Father {
    String name = "Father";
    public Father() {
        System.out.println("父类无参构造器");
    }
    public Father(int i) {
        System.out.println("父类有参构造器");
    }
}

class Son extends Father {
    String name = "son";
    public Son() {
        //super();//通过形参区别调用的父类的哪个构造器。
        super(1);
        System.out.println("子类构造器");
    }
}

public class Test {
    public static void main(String[] args) {
        Son s = new Son();
    }
}
答:在实例化子类对象时,会先调用父类的构造方法,实例化父类的对象。
输出结果为:父类有参构造器 
           子类构造器
  • 创建子类对象时,子类构造器会默认调用父类的无参构造器先创建父类对象,之后再创建子类对象。
  • 若父类没有无参构造器,子类构造器必须使用super显式调用父类的有参构造器,否则便会出错。

相关文章

  • JavaSE之继承

    简述继承 Java中是单继承模式: 一个父类可以有多个子类,但是一个子类只能有一个父类。 继承:public cl...

  • 2019-01-09 Android开发 Java基础知识整理

    JavaSE 基础: 一、Java 面向对象思想 1、面向对象都有哪些特性以及你对这些特性的理解 继承:继承是从已...

  • JavaSE 基础学习之五 —— IO 操作 (java. io

    接上篇《JavaSE 基础学习之四 —— 异常的处理》 五. JavaSE 基础学习 —— IO 操作 (java...

  • JavaSE语法(部分)

    JavaSE语法(部分) 继承 继承中变量的访问特点 在子类方法中访问一个变量/成员方法 子类局部范围找 子类成员...

  • javaSE_day08_继承

    继承: 根据 已有类 派生出 新类 的技术。 优势: 1.代码重用 2.便于维护(高耦合) 注意: java...

  • JavaSE阶段1_继承

    重写与重载的区别 判断规则重载:在同一类中,方法名一致,参数列表不同重些:在继承关系中,在子类中,方法名和参数列表...

  • 复习JavaSE 5.继承

    子类不可以访问超类的私有域,只能借助super 调用父类的域访问器super用途:调用超类方法的特殊关键字 不能将...

  • JavaSE 基础学习之四 —— 异常的处理

    接上篇《JavaSE 基础学习之三 —— Java 的继承与接口》 四. Java 核心专题 —— 异常处理 1....

  • JavaSE 基础学习之三 ——Java 的继承与接口

    接上文《JavaSE 基础学习之二 —— Java 的部分基本语法》 三. Java 的继承与接口 1. java...

  • JavaSE基础知识学习-----继承

    继承 Java面向对象的第二个特性:继承,继承是指新的类可以获得已有类(称为父类或基类)的属性和行为,称新类为已有...

网友评论

      本文标题:JavaSE之继承

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