JAVASE进阶day01(static,extends,权限修饰符,final关键字)

day01思维导图连接 密码:5py0

static关键字

1.被static修饰的变量

变量 :静态变量 与普通非静态成员变量的区别在于静态变量在内存中只存一份,可以作为所有对象的共享变量

2.工具类的规范

1.名字要以Util结尾

2.构造器要私有化

3.工具类中一般只有静态方法

3.注意点

1.成员方法既可以访问静态变量,也可以访问静态方法

2.静态方法只能访问静态的(原因: 和jvm类与对象的加载顺序有关系,静态的成员是属于类的)

4.作用于

静态方法:静态方法一般用于写工具类,与JavaBean进行区别: javaBean用来创建对象用的 ,工具类中一般只有静态方法,并且通常以Util(s)结尾。

类:静态内部类

继承extends

1.为什么要用继承

1.在使用封装的技术时,封装很多类,有些类会产生共性(重复代码),为了解决这个问题---继承

2.概念

1.extends形成父子关系拥有父类的属性和方法

3.特点

1.单继承

2.多层继承

4.优缺点

1.优点:提高代码复用性,方便维护

2.缺点:降低了子类的独立性

5.使用原则

1.存在共性内容

2.连个类存在is a关系

6.在java中为什么子类一定要调用父类的构造函数

1.在Java中,子类不一定非要显式地调用父类的构造函数,但是它必须确保父类的构造函数被调用。这是因为每个对象在创建时都需要初始化其状态,包括从父类继承的状态。如果子类不显式调用父类的构造函数,编译器会自动插入一个默认的对父类无参数构造函数的调用。

2.这是因为在Java中,每个类都是另一个类的子类(直接或间接地继承自Object类)。当创建一个子类的对象时,首先需要完成父类对象的构造过程。这意味着初始化父类中的所有实例变量,设置它们的初始值。如果不调用父类的构造函数,这些变量将不会被正确初始化,可能会导致程序运行时出现错误。

内存图

7.构造方法的访问

1.子类中所有构造方法的访问默认都会先访问父类的无参构造方法

2.super关键字指定

8.变量和方法访问特点

1.就近原则

变量: 局部->子成员->父成员

子成员方法->父成员方法

2.super关键字指定

9.方法重写

override注解:用来检测当前的方法,是否是重写的方法,起到【校验】的作用 

概念:子类中出现与父类方法签名一样的方法

引用场景:子类需要有别于父类方法的方法实现

权限修饰符

final关键字

package com.lu.day01;

import com.lu.day01.pojo.Chicken;
import com.lu.day01.pojo.Dog;

public class Test {
    public static void main(String[] args) {
        Rom rom = new Rom("张三","21323");
        rom.setPublicKey("123");

        Rom rom1 = new Rom("鲁宏", "2122324");
        System.out.println(rom1.getPublicKey());
        Count.count(200);
        Dog dog = new Dog();
        dog.setName("拉布拉多");
        dog.setAge(13);
        dog.setScore(134);
        dog.setSex("公");
        System.out.println(dog);
        dog.run();

        Chicken chicken = new Chicken("坤坤",20,"男");
        chicken.rap();

        MyArrayList myArrayList = new MyArrayList();
        myArrayList.add("你好");
        myArrayList.add("你好1");
        myArrayList.add("你好2");
        myArrayList.add("你好3");

        myArrayList.remove(0);
        for (Object o : myArrayList) {
            System.out.println(o);
        }
    }
}

package com.lu.day01;

import java.util.ArrayList;

public class MyArrayList extends ArrayList {
    @Override
    public Object remove(int index) {
        System.out.println("禁止删除");
        return null;
    }
}

面试题

1.super和this的区别

2.java中所有类的父类是什么

在Java中,所有类的父类是java.lang.Object类。Object类是Java类层次结构的根,位于java.lang包中,这个包在每个Java程序中都会自动导入。这意味着即使一个类没有显式地声明继承自任何其他类,它实际上也是Object类的子类,从而继承了Object类提供的基本行为和属性。

Object类提供了一些常用的方法,比如equals(Object obj)hashCode()toString()clone()finalize()等,这些方法可以被所有Java类使用和重写。通过继承Object类,Java确保了一致性和跨平台的可移植性,同时也为所有类提供了一个共同的基础。

3.思考重载和重写的区别

重写(Override)
  • 定义:重写发生在父类与子类之间,当子类中定义了一个方法,这个方法与父类中的某个方法具有相同的方法名、参数列表和返回类型时,我们说子类方法重写了父类方法。
  • 目的:子类可以通过重写父类的方法来提供自己特有的实现,或者修改父类的行为,以适应子类的需求。
  • 规则
    • 参数列表必须与被重写的方法完全相同。
    • 返回类型必须与被重写的方法相同或兼容(如果是返回对象类型的话)。
    • 访问修饰符不能更严格(例如,如果父类方法是public,子类重写的方法不能是private)。(方法重写时子类的权限一定要小于等于父类的权限)
    • 异常声明:子类重写的方法抛出的异常不能比父类的方法更多或更广(对于受检异常而言)。
重载(Overload)
  • 定义:重载是在同一个类中定义多个同名方法,但这些方法的参数列表不同(参数的数量、类型或顺序不同)。方法的返回类型与方法的重载无关。
  • 目的:重载使我们能够使用相同的名称来执行类似但略有不同的操作,增强代码的可读性和简洁性。
  • 规则
    • 参数列表必须不同,可以是参数数量、类型或顺序的差异。
    • 可以有不同的返回类型,但这不是区分重载方法的依据。
    • 可以有不同的访问修饰符。
    • 可以抛出不同的异常。

4.final关键字作用

1.修饰类: 该类不能被继承(不能有子类,但是可以有父类)

2.修饰方法: 该方法不能被重写

3.修饰变量: 表明该变量是一个常量,不能再次赋值

        3.1变量是基本类型: 数据值不能发生改变

        3.2变量是引用类型: 地址值不能发生改变,内容是可以发生改变的

5.解释一下继承的概念

在编程领域,“继承”是面向对象编程中的一个重要概念。

继承是指一个类(称为子类或派生类)可以从另一个类(称为父类或基类)获取属性和方法。通过继承,子类能够重用父类的代码和功能,同时还可以添加新的属性和方法,或者修改父类中已有的方法的实现,以满足特定的需求。

继承的主要优点包括代码复用、提高代码的可维护性和可扩展性。例如,如果有多个类都具有某些共同的属性和行为,那么可以将这些共同部分提取到一个父类中,让其他类通过继承来获取这些共性,从而减少代码重复编写。缺点是不能使用子类中的特有方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值