zoukankan      html  css  js  c++  java
  • java基础笔记-类与对象(继承)

    继承:

      当多个类之间有相同的特征和行为时,可以将相同的内容提取出来组成 一个公共类,让多个类吸收公共类中已有特征和行为而在多个类型只需 要编写自己独有特征和行为的机制,叫做继承。

    在Java语言中使用extends(扩展)关键字来表示继承关系。

    public class Worker extends Person{}  - 表示Worker类继承自Person类

    其中Person类叫做超类、父类、基类。

    其中Worker类叫做派生类、子类、孩子类。

    继承的特点:

      a.子类不能继承父类的构造方法和私有方法,但私有成员变量可以被继承 只是不能直接访问。

      b.子类默认调用父类的无惨构造,相当于调用super(),如果想要调用父类的有参构造,需要手动在第一行添加 super(父类构造参数) ;

      c.使用继承 ,必须符合 is a 的关系

      d. 一个子类只能有一个父类,不支持多继承

    子类的子类叫间接子类。

    重写:

      super.show()  //调用父类的show 方法

      使用 @Override 标注

    重写原则:

      返回值类型,方法名,参数列表相同,从java5 开始,返回值类型可以是子类型

      访问权限不能变小,可以相同或者变大

      不能抛出更大的异常

    构造块块,静态代码块,构造方法 执行顺序例子:

    package com.lagou.task08;
    
    public class SuperTest {
    
        {
            System.out.println("构造块");
        }
        static {
            System.out.println("静态代码块");
        }
        public  SuperTest(){
            System.out.println("构造方法");
        }
    
        public static void main(String[] args) {
            SuperTest st= new SuperTest();
        }
    }
    package com.lagou.task08;
    /*
    * 先加载父类,再加载子类
    * 执行顺序:
    * --》父类静态代码块--》子类静态代码块
    * --》父类构造块--》父类构造方法
    * --》子类构造块--》子类构造方法
    *
    * */
    public class SubSuperTest extends SuperTest {
        {
            System.out.println("======构造块");
        }
        static {
            System.out.println("=========静态代码块");
        }
        public  SubSuperTest(){
            System.out.println("====构造方法");
        }
    
        public static void main(String[] args) {
            SubSuperTest st= new SubSuperTest();
        }
    
    }

    执行结果:

      =========静态代码块
      构造块
      构造方法
      ======构造块
      ====构造方法

    权限修饰符:

    public 可以在任意位置访问

    protected  不在一个包中也没有父子关系才不能访问

    默认  的只能在本类和同一个包中的类访问,注意默认的子类也不能访问

    private 只能在本类内部使用

    import 静态方法

    import static java.lang.System.out

    final 关键字修饰的类 不能被继承

    final 关键字修饰的方法不能被重写,可以被继承

    final 关键字修饰成员变量,必须初始化,且不能被改变(防止成员变量被改变)

      可以显式初始化,即声明的同时进行初始化

      可以在构造块中初始化

      可以在构造方法中初始化

    常量一般使用  public static final 修饰

    package com.lagou.task08;
    
    public class FinalMemberTest {
    //    private final int cnt = 1; // 显式初始化
        private final int cnt;
    
        /*{
            cnt = 2;  // 构造块中进行初始化
        }*/
    
        public FinalMemberTest() {
            cnt = 3; // 构造方法体中进行初始化
        }
    
        public static void main(String[] args) {
    
            // 声明FinalMemberTest类型的引用指向该类的对象
            FinalMemberTest fmt = new FinalMemberTest();
            // 打印成员变量的数值
            System.out.println("fmt.cnt = " + fmt.cnt); // 0  1  2  3
        }
    }

    补充内容:

    子类和父类共有的属性,使用super区分
    本类的属性,this.
    父类的属性,super.

     文章来自拉勾教育 大数据开发

       

      

  • 相关阅读:
    你真的了解JSON吗?
    FormData对象
    javascript类数组
    Windows环境下XAMPP的相关设置
    PhpStorm相关设置
    yarn 与 npm 比较
    JavaScript+HTML+CSS 无缝滚动轮播图的两种方式
    javascript数据类型和类型转换
    焦大:以后seo排名核心是用户需求点的挖掘
    焦大:seo思维进化论(番外)
  • 原文地址:https://www.cnblogs.com/wanghzh/p/14567151.html
Copyright © 2011-2022 走看看