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、重写的方法不能将被重写的方法的访问权限缩小

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

  • 相关阅读:
    mysql常用数据类型的选择
    mysql常用操作
    phpstorm运行在浏览器中执行php文件报502错误
    (转)PHP中的 抽象类(abstract class)和 接口(interface)
    mysql group by优化
    母函数问题【转】
    组合数学
    网易游戏2011招聘笔试题
    B树
    概率题
  • 原文地址:https://www.cnblogs.com/obge/p/12346155.html
Copyright © 2011-2022 走看看