• java类的继承


    类的继承是类的一个重要概念,通过类的继承子类可以继承父类的属性和方法,提高代码的复用性。

    eg:

    //**

    *创建一个父类Teacher,父类有两个属性name,age,两个方法sleep(),teach()

    *

    */

    class Teacher{

    public String name;

    public int age;

    public void sleep(){

    System.out.println("老师会睡觉");

    }

    public void teach(){

    System.out.println("老师会讲课");

    }

    }

    //**

    *JavaTeacher类继承Teacher类,并有自己独有的方法eye()

    class JavaTeacher extends Teacher{

    public void eye(){

    System.out.println("java老师戴眼镜");

    }

    }

    如上所示,JavaTeacher类继承了Teacher类,这样通过继承JavaTeacher类就拥有了Teacher类的两个属性name,age,两个方法sleep(),teach()。除了继承父类的属性和方法,子类还可以创建自己的方法和属性。

    1.private在类中的使用

    子类只能继承父类的非private属性和方法。需要指出的是,用private修饰方法不常见,毕竟若果是private,则对外不能使用,是没有意义的(需要指出的是单例模式,就是通过用private把构造器私有化实现的)。如果父类的属性被私有化,则子类可以通过get/set方法间接调用。

    eg:

    //用private修饰name属性

    class Teacher{

    private String name;

    public void setName(String name){

    this.name=name;

    }

    public String getName(){

    return name;

    }

    }

    //JavaTeacher类继承Teacher类

    class JavaTeacher extends Teacher{

    }

    public class TeacherDemo{

    public static void main(String[] args){

    JavaTeacher jt=new JavaTeacher();

    jt.setName("网名“);

    jt.getName();

    }

    2.super用法

    在创建一个子类对象时,首先调用父类构造器创建一个父类对象,然后调用子类构造器创造一个子类对象。

    父类中如果没有带有参数的构造器时,会默认调用父类的默认无参数构造器,无论这个无参数构造器是否显式显示。

    父类中如果有带有参数的构造器时,如果默认无参数构造器不显式显示,则会覆盖,子类创建时不会默认调用

    当父类只存在带有参数的构造器时,子类的构造器必须有该父类构造器。

    2.1.调用父类的默认构造器

    class Parent{

    }

    class Son extends Parent{

     son(){

    super()//调用父类的默认构造器,super()也可以不写,默认调用

    system.out.println("这是子类构造器");

    }

    }

    2.2当有带有参数的构造器时,不会默认调用

    class Parent{

    Parent(String name){

    }

    }

    class Son extends Parent{

     son(){

    super()//这事由于父类默认构造器被覆盖,不可调用,不管是显示还是隐式

    super(name);//需要调用父类的带有参数的构造器,并且父类构造器必须写在第一行

    system.out.println("这是子类构造器");

    }

    }

    2.3当父类无参数构造器被写明时,子类构造器可以调用

    class Parent{

    Parent(){

    }

    Parent(String name){

    }

    }

    class Son extends Parent{

     son(){

    super()//由于父类无参数构造器被显式写明,所以子类构造器可以调用,该调用可以是显式的和隐式的

    system.out.println("这是子类构造器");

    }

    }

    3.final关键字

    final关键字修饰类,则类不可继承。

    final关键字修饰属性,则属性不可修改。常用与修饰常量。如:

    public static final doule pi=3.14;

    final关键字修饰方法,则方法不可被重写。

  • 相关阅读:
    身份证验证(c#和js)
    获取焦点问题
    关于加载设计器遇到一个或多个错误问题的解决方案
    关于如何使用自定义的结束消息循环的方式 (转载)
    多种重要源码下载
    关于线程同步(转载)
    ArrayList的使用技巧
    一些所谓有利于家庭生活的优点
    080801 30℃
    080731 31℃
  • 原文地址:https://www.cnblogs.com/hitnmg/p/9263501.html
Copyright © 2020-2023  润新知