第三周学习笔记

目录

1.成员变量和静态变量的区别:

2.代码块  {} (重点:代码块的优先级,静态代码块,构造代码块,构造方法)

2.1:代码块:

2.2:分类:

3.面向对象三大特征之继承 (extends)

3.1:什么是继承:

3.2:关键字:extends3.3继承的书写格式:   

3.4:继承的好处

3.5:继承的特点

3.6:继承的弊端

​​​3.7:什么时候使用继承

3.6、继承类中,各成员间关系

3.7、继承中构造方法的访问(子类如何访问父类的构造方法 )

4.this和super的区别

5.什么是方法重写?

5.1重写和重载的区别

6.final关键字

6.1final关键字的特点:

7.面向对象三大特征之多态

7.1什么是多态

7.2多态的前提条件

7.3成员访问特点:

7.4多态的好处:

7.5多态的弊端:

7.6多态的成员特点 ("孔子装爹")

8.abstract关键字(抽象)

8.1什么是抽象类? 

8.2抽象类的特点:  

8.3抽象类的成员特点 :       

8.4abstract不能和哪些关键字使用:

9.接口(很抽象)

9.1什么是接口

9.2接口的特点:

9.3接口的成员特点:

9.4接口和抽象类的区别?

9.5类与接口的关系

10.形式参数问题和返回值问题----->只研究引用类型做形参

11.包----package

12.权限修饰符

13.内部类

13.1概念

13.2外部类访问内部类成员:

13.3静态的成员内部类的特点

13.4匿名内部类

14.选择排序

14.1选择排序思想:

14.2选择排序代码:

15.常用类之Object

15.1常用的方法:


1.成员变量和静态变量的区别:

1)成员变量所属于对象。所以也称为实例变量。
静态变量所属于类。所以也称为类变量。
2)成员变量存在于堆内存中。
静态变量存在于方法区中。
3)成员变量随着对象创建而存在。随着对象被回收而消失。
静态变量随着类的加载而存在。随着类的消失而消失。
4)成员变量只能被对象所调用 。
静态变量可以被对象调用,也可以被类名调用。

2.代码块  {} (重点:代码块的优先级,静态代码块,构造代码块,构造方法)

2.1:代码块:

使用{}括起来的内容称为代码块。

2.2:分类:

  • 局部代码块:在方法定义中使用。作用:限定局部变量的生命周期
  • 构造代码块:在类的成员位置(类中,方法外),使用{}包裹起来  作用:给类中的一些成员进行                          数据初始化。特点:每次在执行构造方法之前,如果存在构造代码块,先执行构造代码块中的内容!
  • 静态代码块:static{},在类的成员位置 ----特点:随着类的加载而加载,优先于对象存在! 静态代码块就加载一次!
  • 代码执行的优先级:静态代码块>构造代码块>构造方法

3.面向对象三大特征之继承 (extends)

3.1:什么是继承:

         将多个类的共性内容抽取到一个独立的类中,然后让多个类和这个独立类产生继承关系。子类继承父类的的特征和行为,使得子类对象具有和父类的相同的行为和属性。

3.2:关键字:extends
3.3继承的书写格式:   

class 父类{ 成员变量;成员方法;构造方法  }
class 子类 extends 父类{ }

3.4:继承的好处

        1)提高代码的维护性2)提高代码的复用性3)类和类之间的继承关系,是“多态”特性的前提条件。

3.5:继承的特点


        1)Java只支持单继承,不支持多继承(一个类只能有一个父类,不可以有多个父类。)2)支持多级继承

class A{//有一个父类A}
class B extends A{//子类B继承父类A}
class C extends B{//子类c继承父类B}

3.6:继承的弊端

         继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子类实现也不得不跟着变化,削弱了子类的独立性。

​​​3.7:什么时候使用继承

         当两个类满足A是B的一种,就说明他们存在继承关系,这个时候可以考虑使用继承来体现。

3.5、继承的使用注意事项
        1)子类继承父类:可以继承父类的非私有成员,私有的成员外界不能访问,只能在本类中访问,但是可以通过公共访问方法(set/get)访问。

        2)构造方法是不能被子类继承的,但是子类要访问父类的构造方法,可以通过关键字super来访问。

3.6、继承类中,各成员间关系

成员变量/成员方法:遵循就近原则

如果子类的成员变量名称和父类的成员变量名称一致:先在子类的局部位置找局部变量名称,如果有,就使用。如果没有,就在子类的成员位置找,,如果存在,就使用。如果没有,直接在父类的成员位置中找,如果有,就是使用。如果没有,就没有这个变量,报错。

3.7、继承中构造方法的访问(子类如何访问父类的构造方法 )


1)子类继承父类,子类的所有的构造方法都会默认的访问父类的无参方法。

        子类的所有构造方法的第一句话:默认隐藏了super() ;因为子类中会使用到父类的数据,所以在继承关系中得先让父类初始化.

        构造方法:分层初始化!(先父类无参构造方法,再执行子类的构造方法)。

        super:代表的父类对象的空间表示(父类对象的地址值引用!)

2)如果父类中的无参构造方法没有,子类会怎么样?

        子类的所有的构造都会报错 ,因为子类所有构造方法默认父类的无参构造方法。

 解决方法:

1:给出父类的无参构造方法。

2:在子类的构造方法中的第一句话,通过super(xxx),间接的访问父类的有参构造方法 。

3:只要子类的所有构造方法中一个能够让父类初始化即可!

                在子类的有参构造方法中:this();访问本类的无参构造方法,然后在子类的无参构造方法中间接访问父类的有参构造方法super(xxx)。  

一般情况子类的无参构造:默认访问父类的无参构造方法。子类的有参构造,直接访问父类的有参构造。

4.this和super的区别

1)概念的区别
    this:代表的当前类对象的地址值引用
    super:代表的父类的空间表示(父类对象的地址值引用)
2)使用不同
成员变量:
        this.变量名 ; 访问的本类的成员变量
        super.变量名; 访问的父类成员变量
构造方法:
        this() ; 访问本类的无参构造方法
        this(xx); 访问本类的有参构造方法
        super() ;访问父类的无参构造方法
        super(xx);访问父类的有参构造方法
成员方法:
        this.方法名() ;访问本类的成员方法
        super.方法名() ;访问父类的成员方法

5.什么是方法重写?

方法的重写(@Override):在继承关系中,子类出现了一摸一样的方法声明(权限修饰符,返回值类型,方法名,参数列表都相同),子类将父类的方法覆盖了,实现自己的业务逻辑

5.1重写和重载的区别

1:定义不同:重载是定义相同的方法名、参数不同,重写是子类重写父类的方法
2:范围不同:重载是在一个类中,重写是子类与父类之间的
3:多态不同:重载是编译时的多态性,重写是运行时的多态性
4:参数不同:重载的参数个数、参数类型、参数的顺序可以不同,重写父类子方法参数必须相同
5:修饰不同:重载对修饰范围没有要求,重写要求重写方法的修饰范围大于被重写方法的修饰范围

6.final关键字

final是一种状态修饰符:表示无法更改的,可以用于方法、类、变量当中,一旦用final关键字修饰后,将不能改变final所修饰的引用。一般使用于不想让子类重写父类的功能

6.1final关键字的特点:

1:final修饰类,该类不能继承
2:final修饰变量,此时变量是一个常量(自定义常量)
            编译时期常量:(jvm不需要加载)   public static final 基本数据类型 变量名 = 值;
            运行时期常量:(jvm需要加载)     public static final 引用数据类型 变量名 = new  xxx();
3:final修饰成员方法,该方法不能被重写(重写被 final 修饰的方法,编译时就会报错。)

修饰变量
1. 局部变量 —— 基本类型
基本类型的局部变量,被 final 修饰后,只能赋值一次,不能再更改
public class FinalDemo1 {
public static void main(String[] args) {
// 声明变量,使用final修饰
final int a;
// 第一次赋值
a = 10;
// 第二次赋值
a = 20;
// 报错,不可重新赋值
// 声明变量,直接赋值,使用final修饰
final int b = 10;
// 第二次赋值
b = 20; // 报错,不可重新赋值
}
}<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值