java基础

Java基础

面向对象

面向对象编程:拿东西过来做对应的事情。

类和对象

类里面可以定义

  • 成员变量(代表属性)

  • 成员方法(代表行为)

  • 构造器

  • 代码块

  • 内部类

private修饰符的作用

  • 是一个权限修饰符

  • 可以修饰成员(成员变量和成员方法)

  • 被private修饰的成员只能在本类中才能访问

this关键字的作用

<span style="background-color:#f8f8f8"><span style="color:#333333"> (1)this调用本类中的属性,this会调用类中的成员变量;
 (2)this调用本类中的其他方法;
 (3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。</span></span>

构造方法

作用:在创建对象的时候给成员变量进行初始化。

  • 如果没有定义构造方法,那么系统将默认给出一个无参的构造方法。

  • 如果定义了构造方法,系统将不再提供默认的方法。

Java内存分配

  • 栈:方法调用的时候,进栈执行。方法定义的变量也在栈里面。

  • 堆:new出来的是在堆里面开辟一块小空间并产生地址值。

  • 方法区(JDK8取消)

创建对象在内存中的执行过程

  • 加载class文件

  • 申明局部变量

  • 在堆内存开辟空间 (new对象)

  • 默认初始化

  • 显示初始化

  • 构造方法初始化

  • 将堆内存中的地址值赋值给左边的局部变量

基本数据类型和引用数据类型

基本数据类型:数据值存储在自己的空间中。赋值给其他变量,也是赋的真实的值。

引用数据类型:数据值是存储在其他空间中,自己空间中存储的是地址值。 赋值给其他变量,赋的地址值。

this的内存原理

this的本质:所在方法调用者的地址值。

成员变量和局部变量的区别

区别成员变量局部变量
类中位置不同类中,方法外方法内、方法申明上
初始化值不同有默认初始化值无,使用之前需要完成赋值
内存位置不同堆内存栈内存
生命周期不同随着对象的创建而存在,随着对象的消失而消失随着方法的调用而存在,随着方法的运行结束而消失
作用域整个类或中有效当前方法中有效

static静态变量

static表示静态,可以修饰成员变量,成员方法。

被static修饰的变量叫成员变量。

被static修饰的方法叫成员方法。

静态变量的特点:被该类所有对象共享

静态变量是随着类加载而加载的,静态变量时优先于对象出现的。

static的注意事项

  • 静态方法只能访问静态变量和静态方法,不能调用非静态变量和非静态方法。

  • 非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法。

  • 静态方法中没有this关键字。

继承的特点

支持单继承,不支持多继承,但支持多层继承。

子类继承了父类哪些内容

子类不能调用父类的私有成员变量

能否继承私有非私有
构造方法不能继承不能继承
成员变量能继承能继承
成员方法不能继承能继承

虚方法表

非private 非static 非final修饰的

只有父类中的虚方法才能被子类继承

一个类中可以有成员变量,成员方法,构造方法

继承中,成员变量的特点

就近原则,离谁近就用谁。

方法重写

子类中出现了和父类一模一样的方法声明,我们就称子类的方法是重写的方法

  • 重写方法的名称、形参列表必须与父类中的一致。

  • 子类重写父类方法时,访问权限子类必须大于等于父类。

  • 子类重写父类方法时,返回值类型子类必须小于等于父类。

this super使用

关键字访问成员变量访问成员方法访问构造方法
thisthis.成员变量 访问本类的成员变量this.成员方法 访问本类的成员方法this.() 访问本类的构造方法
supersuper.成员变量 访问父类的成员变量super.成员方法 访问父类的成员方法super.() 访问父类的构造方法

多态

同类型的对象,表现出的不同的形态。

多态的表现形式

父类类型 对象名称=子类对象

多态的前提

  • 有继承/实现的关系

  • 有父类引用指向子类对象

  • 有方法重写

多态调用成员的特点

  • 变量调用:编译看左边,运行看左边

  • 方法调用:编译看左边,运行看右边

多态的优点

  • 在多态的形式下,右边对象可以实现解耦合,便于扩展和维护。

  • 定义方法的时候,使用父类类型作为参数,可以接收所有子类对象,体现多态的扩展性与便利。

多态的弊端

不能调用子类特有的功能

代码块

  • 局部代码块:写在方法里面的,提前结束变量的生命周期。

  • 构造代码块:写在成员位置的代码块,优先于构造方法执行。可以把构造方法中重复的代码块写在构造代码块中。构造代码块优先于构造方法执行。

  • 静态代码块:通过static修饰,随着类的加载而加载,并且自动触发、只执行一次。

静态代码块使用场景

在类加载的时候,做一些数据初始化的时候使用。

抽象类

如果一个类中有抽象方法,则该类必须声明为抽象类。

抽象类的作用:抽取共性的时候,无法确定方法体,就把方法定义为抽象的。强制让子类按照某种格式重写。

抽象方法

将共性的行为(方法)抽取到父类之后,由于每一个子类执行的内容是不同的,所以,在父类中不能确定具体的方法体。该方法就可以定义为抽象方法。

抽象类和抽象方法使用的注意事项

  • 抽象类不能实例化(创建对象)。

  • 抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类。

  • 抽象类可以有构造方法:当创建子类对象时,给属性赋值时使用。

  • 抽象类的子类

    • 要么重写抽象类中的所有抽象方法,之后可以创建对象。

    • 要么仍然是抽象类,仍然不能创建对象。

接口中成员的特点

1.成员变量:只能是常量。默认修饰符:public static final

2.构造方法:没有

3.成员方法:只能是抽象方法,默认修饰符:public abstract

接口和类之间的关系

  • 类和类的关系:继承关系,只能单继承,不能多继承,但是可以多层继承。

  • 类和接口的关系:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同事实现多个接口。

  • 接口和接口的关系:继承关系,可以单继承,也可以多继承。

JDK8以后,允许接口中定义默认方法,需要使用default修饰。

接口中默认方法的定义格式:

格式:public default 返回值类型 方法名(参数){}

接口中默认方法的使用注意事项:

  • 默认方法不是抽象方法,所以不强制被重写。但是如果被重写,重写的时候去掉default关键字。

  • public可以省略,default不可以省略。

  • 如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写。

内部类

类的五大成员:属性、方法、构造方法、代码块、内部类

内部类表现的事物是外部类的一部分

内部类的访问特点

  • 内部类可以直接访问外部类的成员,包括私有

  • 外部类要访问内部类成员,必须创建对象

内部类的分类

  • 成员内部类

  • 静态内部类

  • 局部内部类

  • 匿名内部类

匿名内部类

匿名内部类的本质就是隐藏了名字的内部类。

<span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">// 格式</span>
    <span style="color:#770088">new</span> <span style="color:#000000">类名或者接口名</span>(){
        <span style="color:#000000">重写方法;</span>
    }</span></span>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值