zoukankan      html  css  js  c++  java
  • Java 基础 ------- 面向对象(三) 继承

    继承 关键词(extends)还有延伸扩展之意,表示在基础上进行扩展,基类的表示父类,扩展的表示子类。

    好处:解决了代码冗余,是实现代码重用,增加了软件的扩充性。

    语法格式:     Java 只支持单继承。

    访问修饰符 class 子类 extends 父类 {
    
    }

    访问修饰符如果是public 在整个项目中可以访问,如果不写该类只能在包内可见。

    子类可以从父类中继承的内容:

    1、可以继承父类中public 和 protected 修饰的属性和方法,不论子类和父类是否在同一个包里

    2、如果子类和父类在同一个包里,可以继承默认访问修饰符修饰的属性和方法

    3、无法继承父类的构造方法,可以在子类中通过 super()  进行调用

    子类调用父类方法:
    1、通过super 访问父类构造方法,属性,方法

    //访问父类构造方法
    super(参数)
    //例子 public ErHa(String name,int age,String weight) { super(name,age); //调用父类有参构造方法 this.weight =weight; }
    //访问父类方法或属性
    super.父类方法
    
    
    //子类中的方法
        public void showTest() {
            //父类中的方法  属性
            super.showPrint1("er");
            super.name = "obge";
        }

    2、super与this

    this用于 在成员变量与局部变量名称相同的时候,通过this.成员变量进行引用。

    super 用于子类中访问父类的构造方法,方法和变量,但是private 修饰的不能访问

    3、实例化子类

    使用继承之后,实例化子类,可以通过子类对象名访问父类方法

     调用步骤:

    子类实例化首先执行父类的构造方法,然后执行子类构造方法,Java虚拟机在实例化子类对象时按照从父类到子类的步骤执行

    规则:
    1、如果写了有参构造方法,就不会自动生成无参构造方法,所以如果父类写了有参构造方法,没有写无参构造方法,实例化子类会报错

    2、如果父类没有写构造方法,这时实例化子类没事

    3、如果子类通过super 显示调用父类有参构造方法,那么就不会执行父类无参构造方法

    //例子
    //头头
    package com.obge.obj;
    public class Person {
        String name;    
        public Person(){
            System.out.println("执行Person无参");
        }    
        public Person(String name){
            this.name =name;
            System.out.println("执行Person有参");
        }
    }
    
    //父类
    package com.obge.obj;
    public class Student extends Person {
        String school;
        public Student() {
            System.out.println("执行stu无参");
        }
        public Student(String name,String school) {
            //调用父类方法
            super(name);
            this.school =school;
            System.out.println("执行stu有参");
        }
    }
    
    //最小
    package com.obge.obj;
    
    public class SmallStu extends Student{
        String teacher;
        public SmallStu() {
            System.out.println("执行SmallStu无参");
        }
        public SmallStu(String name,String school,String teacher) {
            //调用父类方法
            super(name,school);
            this.teacher =teacher;
            System.out.println("执行SmallStu有参");
        }
    
    }


     重要

    1、Object  所有类的父类。所有的Java类都直接或间接继承了java.lang.Object

    没有写extend关键字的类,Object 是这个类的直接父类,object常用重要方法

    2、super与this

    this用于 在成员变量与局部变量名称相同的时候,通过this.成员变量进行引用。

    super 用于子类中访问父类的构造方法,方法和变量,但是private 修饰的不能访问

    3、方法重写

    定义:对从父类继承的方法进行重新编写,称为方法重写或方法覆盖(Overriding)

    要求:
    a、重写的方法名与被重写的方法名相同

    b、重写的方法与被重写的方法,具有相同的参数列表

    c、重写的方法的返回值类型与被重写的方法的返回值类型相同

    d、重写的方法不能将被重写的方法的访问权限缩小

    总结:方法重写,在父子类中,子类可重写方法名,参数列表和返回值类型相同的方法,但不能缩小父类方法的 访问权限

  • 相关阅读:
    Leetcode 811. Subdomain Visit Count
    Leetcode 70. Climbing Stairs
    Leetcode 509. Fibonacci Number
    Leetcode 771. Jewels and Stones
    Leetcode 217. Contains Duplicate
    MYSQL安装第三步报错
    .net 开发WEB程序
    JDK版本问题
    打开ECLIPSE 报failed to load the jni shared library
    ANSI_NULLS SQL语句
  • 原文地址:https://www.cnblogs.com/obge/p/12346155.html
Copyright © 2011-2022 走看看