Java 继承

本文介绍了Java编程的基础知识,包括局部变量和成员变量的区别,构造方法的作用,以及无参和有参构造的区别。文章还阐述了对象创建的过程,类封装的步骤,以及this和super关键字的使用。此外,讨论了继承的概念、好处和语法,以及重写(override)的基本要求。最后,提到了访问修饰符的作用和权限范围。
摘要由CSDN通过智能技术生成

零 、复习昨日

局部变量和成员变量区别:位置、作用域、初始值、内存位置、声明周期
构造方法作用:创建对象
有参无参区别:
无参构造创建出的对象是默认值
有参构造创建出的对象是指定值
创建对象的过程:(new Student())
在堆中开辟空间,分配地址空间
属性和方法被初始化
然后执行构造方法内部的代码
对象创建成功将地址值赋给变量(对象名)
this:代表当前对象,调用属性和方法
类封装的步骤:
1、私有化属性
2、给每个属性提供对应的setName、getName

一、作业

/**
 * @escription:
 * @author:灰总
 * @data:
 * null就是没有,就是空引用、空对象
 *  自定义类型赋值就是创建对象,将地址值赋值给变量
 * 一个老师一个学生
 */
class Student {
    String name;
    String stuNo;
}

public class Teacher {
    String name;
    int age;

    Student student;
}

class TestTeacher{
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        teacher.student = new Student();
        String name = teacher.student.name;
        System.out.println(name);

        teacher.student.name = "张三";
        System.out.println(teacher.student.name);
    }
}
package com.qf0214;

/**
 * @escription:
 * @author:灰总
 * @data:
 * null就是没有,就是空引用、空对象
 *  自定义类型赋值就是创建对象,将地址值赋值给变量
 * 一个老师多个学生
 */
class Student {
    String name;
    int age;
    public Student(){

    }
    public Student(String name,int age){
        this.name = name;
        this.age = age;
    }
}

public class Teacher {
    String name;
    int age;
  // Student student;// 一个学生
    // 一个老师多个学生
    Student[] stuArr = new Student[3];

}

class TestTeacher{
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        /* 从老师对象中取出学生数组
         *  从数组中取出第一个元素,null*
         *
         */
        teacher.stuArr[0] = new Student("zhangsan",23);
        teacher.stuArr[1] = new Student("lisi",23);
        teacher.stuArr[2] = new Student("wangwu",23);

        System.out.println(teacher.stuArr[0].name);
        System.out.println(teacher.stuArr[1].name);
        System.out.println(teacher.stuArr[2].name);
    }
}

二、继承[重点]

2.1 介绍

生活中的继承:子辈可以使用(继承)父辈的资源
程序中的继承:子类可以使用父类的属性和方法
好处:
可以使代码复用
可以提高开发效率
是多态的前提

2.2 语法

类继承另一个类语法
public class A extends B{ }

继承特点:
继承后子类可以使用父类的属性和方法
不能多继承(一个人只有一个爹),只能单继承
支持层次继承(A-->B-->C)
继承中属性问题
  1. 子类可以使用父类非私有的属性

  1. 父类不可以使用子类的属性

  1. 如果子类和父类有相同的属性,默认使用子类自己的属性

继承中方法的问题
  1. 子类可以使用父类非私有的方法

  1. 父类不可以使用子类的方法

  1. 如果子类和父类有相同的方法,默认使用子类自己的方法(详细内容之后(重写)再讲)

继承中构造方法的问题
  1. 构造方法都不能直接调用

  1. 子类构造方法执行,会先调用父类的构造方法,因为构造方法内有隐藏的super()调用父类的无参构造,且super()必须放在构造方法第一行

  1. 即创建子类对象时,会先创建父类对象再创建子类对象

2.3 继承中创建对象的过程

  1. 先执行父类构造方法,在堆中开启空间,分配地址值

  1. 为父类的属性和方法 初始化默认值

  1. 然后执行父类构造方法内部的代码


4.然后在初始化子类属性和方法,初始化默认值

5.然后执行子类构造方法内部代码

6.创建对象完成,将子类引用赋值对象名

三、重写

重载:overload
重写:override
重写是发生在继承中,字符类中
重写要求子类重写父类方法
要求:访问修饰符,返回值类、方法名、参数列表完全和父类一样;方法体内的代码可以不一样
一般重写后,子类的方法上都会有一个@override
为什么需要重写?

父类的方法不适合用于子类,子类就需要重写。(在父类方法的基础上,将方法改造成适合自己的)

四、this和super

this是当前对象
this调用对象的属性 this.属性;
this调用对象的方法 this.方法;
this调用自己的构造方法 this(); 调用自己无参构造,this(参数); 调用自己有参构造
super是父类对象,可以调用父类的属性(super.属性);和方法super.方法();。
特殊的,也可以放在构造方法中调用父类的构造方法super()调用父类无参构造,super(参数)调用父类有参构造

五、访问修饰符

访问修饰符,也叫做访问限定符,访问控制符,其实就是控制权限(在不同的位置能不能使用)。
控制着类、属性、方法以及构造方法的访问权限
public、protected、缺省(默认),private

当前类

当前包其他类

不同包的子类

不同包非子类

public

protected

自己调用自己的属性不行,子类对象可以调

×

默认(package)

×

×

private

×

×

×

访问修饰符可访问的范围:public > protected > package > private

单词:

extends:继承;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值