面向对象编程基础知识

JAVA变量放置位置及分类
局部变量在使用前必须先声明、初始化(赋初值)再使用。
成员变量如果不自行初始化,它会自动初始化成该类型的默认初始值。
静态变量如果不自行初始化,会自动初始化成该类型的默认初始值。
https://blog.csdn.net/qq_43459184/article/details/83280308
JAVA中两大数据类型
在这里插入图片描述
自动装箱和拆箱
将一个基本数据类型的值赋给其所对应的包装类型称之为自动装箱;将一个基本数据类型包装类类型的值赋给其所对应的基本数据类型称之为自动拆箱

两大数据类型区别
1、声明变量时,内存分配方式不同。原始值存储在栈中,引用值存储在堆中。
2、访问机制不同。原始值可以直接访问,引用值必须先获取对象地址,再获取内容。
3、复制变量不同。原始值副本赋值给新变量,引用值只赋值地址空间,指向同一个对象。
4、原始值把变量值传给参数,引用值传递对象堆内存地址。

Java之成员变量、全局变量、局部变量的区别
1、存储区域
全局变量: (静态全局变量、局部全局变量)放在全局数据区中。
成员变量: 未实例化变量放在栈中,实例化对象放在堆中。栈中放的是指向堆中对象的引用地址。
局部变量: 放在栈中,实例化对象放在堆中,8种基本数据类型变量放在栈中,变量所对应的值是放在栈中。
2、生命周期
全局变量: 当类加载开始被创建,在类中只有一份; 会跟着类的消失而消失,生存时间较长。
成员变量: 当对象被创建时存在,当对象被回收的同时会消失,生存时间适中。
局部变量: 当方法被调用时而存在,当方法调用结束而消失,生存时间较短。
3、作用域
全局变量: 作用整个类中,直接被类调用。
成员变量: 作用在整个类中,被对象调用。
局部变量: 作用在一个局部区域,方法体或函数块内。

变量就近原则
类未被加载
1、先执行父类的静态代码块和静态变量初始化,并且静态代码块和静态变量的执行顺序只跟代码中出现的顺序有关。
2、执行子类的静态代码块和静态变量初始化。
3、执行父类的实例变量初始化
4、执行父类的构造函数
5、执行子类的实例变量初始化
6、执行子类的构造函数
类已被加载
则静态代码块和静态变量就不用重复执行,再创建类对象时,只执行与实例相关的变量初始化和构造方法。

This关键字
this关键字 指向的是当前对象的引用;
this.属性名称 指的是访问类中的成员变量,用来区分成员变量和局部变量(同this.方法名称)。
this() ——访问本类的构造方法,()中如果有参数,就是调用指定的有参构造方法。
1.this() 不能使用在普通方法中 只能写在构造方法中;2.必须是构造方法中的第一条语句。
变量的查找顺序先找自己方法内,如果没有就去this里面找。

Static归纳
用途: 方便在没有创建对象的情况下来进行调用(方法/变量)。
静态内容在内存中是保留一份的,并且各个对象之间进行共享。
推荐使用类名访问静态内容特点:1、数据共享;2、属于类的,并不属于对象;3、优先于对象产生。
1、static修饰成员方法:因静态方法不依赖于任何对象就可以进行访问,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都必须依赖具体的对象才能够被调用。
2、static修饰成员变量:亦称为静态变量,静态变量和非静态变量的区别是:静态变量被所有对象共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
3、static修饰代码块:用来形成静态代码块以优化程序性能;特性:只会在类被初次加载的时候执行一次。

创建对象的过程执行顺序
1、静态构造器;2、通用构造器;3、构造方法->创建对象。

Java中方法语法及特点
语法:方法的访问权限 返回值 方法名(参数){A}
构造方法特点: 一定存在,方法名与类名相同,没有返回值。语法:public 类名(参数){ A }

Java重写和重载特点
override(重写)
概述:子类对从父类继承来的方法的实现细节进行修改,即不能改变方法的返回值和方法的参数列表,仅仅对方法内部的细节进行修改。
   1、方法名、参数、返回值相同。
   2、子类方法不能缩小父类方法的访问权限。
   3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
   4、存在于父类和子类之间。
   5、方法被定义为final不能被重写。
overload(重载)
概述:多个具有不同的参数个数或者类型的同名函数同时存在于同一个类中。
  1、参数类型、个数、顺序至少有一个不相同。
  2、不能重载只有返回值不同的方法名。
  3、存在于父类和子类、同类中。

创建对象从JVM角度分析的具体过程
1:检查类是否已经被加载;
2:为对象分配内存空间;
3:为对象字段设置零值;
4:设置对象头;
5:执行构造方法。

Java创建对象的几种方式
1、使用new关键字
2、使用反射机制:
一、使用Class类的newInstance方法;User user = User.class.newInstance();
二、使用Constructor类的newInstance方法;User user = constructor.newInstance();
3、使用clone方法,用clone方法创建对象并不会调用任何构造函数。
4、使用反序列化

Java中set与get方法的使用
作用:在java中,为了保证数据的安全性,我们会把数据定义为private等(私有、封装),如果想要调用就会用到set()方法与get方法或者构造函数方法。
封装:private私有化成员属性,提供公开public的getter/setter
class Stutent1{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

Java继承的概念及方法
定义:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承关键字:1、extends关键字——在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。
2、implements关键字——可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。
**3、super关键字——**我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
**4、this关键字——**指向自己的引用。
5、final关键字——可以把类定义为最终类(不能继承)或者修饰方法,该方法不能被子类重写。
声明类语法:final class 类名 { }
声明方法语法:修饰符(public/private/default/protected) final 返回值类型 方法名(){ }

Java多态知识详解
定义:多态是同一个行为具有多个不同表现形式或形态的能力。
多态存在三个必要条件:1、继承;2、重写;3、父类引用指向子类对象。
例如:Parent p = new Child();

Java抽象类和抽象方法
抽象类判定: 一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类特点:1、抽象类不能实例化对象;2、抽象类必须被继承,才能被使用。
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
抽象方法判定: 方法的具体实现由它的子类确定。
抽象方法特点:1、如果一个类包含抽象方法,那么该类必须是抽象类;2、任何子类必须重写父类的抽象方法,或者声明自身为抽象类。
其他总结: 1、抽象类中的抽象方法只是声明,不包含方法体。
2、 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

Java接口详解与类的区别
定义: 接口,在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。因此接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
接口几点特性: 1、接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的 指定(只能) 为 public abstract。
2、接口中可以含有变量,但是接口中的变量会被隐式的 指定(只能) 为 public static final 变量3、接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
接口与类区别: 1、接口不能用于实例化对象;2、接口没有构造方法;3、接口中所有的方法必须是抽象方法;4、接口不能包含成员变量,除了 static 和 final 变量;5、接口不是被类继承了,而是要被类实现;6、接口支持多继承。
抽象类和接口的区别: 1、从设计层面上看,抽象类提供了一种 IS-A 关系,即子类对象必须能够替换掉所有父类对象。而接口更像是一种 LIKE-A 关系,并不要求接口和实现接口的类具有 IS-A 关系。
2、 从使用上来看,一个类可以实现多个接口,但是不能继承多个抽象类。
3、接口的字段只能是 static 和 final 类型的,而抽象类的字段没有这种限制。
4、接口的成员只能是 public 的,而抽象类的成员可以有多种访问权限。

Java中equals和==的区别
1、equals方法不能作用于基本数据类型的变量;
2、如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
3、诸如Number、String、Date等类对equals方法进行了重写后,比较的是所指向的对象的内容。
1、Java中==如果作用于基本数据类型变量,则直接比较其存储的 “值”是否相等;
2、如果作用于引用类型的变量,则比较的是所指向的对象的地址。

Java 实例 - instanceof 关键字用法
instanceof 是 Java 的一个二元操作符,类似于 ==,>,< 等操作符。
instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型,即判断xxx对象是否是xxx类型的。示例:if (o instanceof Vector)

值传递和引用传递
值传递,是对于基本数据类型的变量而言。传递的是该变量一个副本,改变副本并不影响原变量。
引用传递,是对于对象型变量而言。传递的是该变量地址一个副本,并不是该对象本身,对形参修改会影响实际参数值。
String,Integer,Double等类型特殊处理,可以理解为传值,最后的操作不会修改实参对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面向对象编程是一种程序设计思想,它以对象为基本单位,通过对象之间的交互来完成程序的功能。在Java中,面向对象编程是一种重要的编程范式,也是西北工业大学计算机科学与技术专业的基础课程之一。 在面向对象编程的范式中,一切皆为对象。对象是程序的基本单位,它可以拥有属性和行为。属性是对象的状态和特征,行为是对象能够执行的操作。通过封装、继承和多态等特性,可以将对象之间的关系和功能进行抽象和组织,从而更好地设计和实现程序。 在西北工业大学的面向对象编程基础课程中,学生会学习Java语言的基本语法和面向对象编程的基本概念。他们会学习如何定义类和对象,如何实现封装和继承,以及如何应用多态和接口等概念。此外,他们还会学习如何使用Java的标准类库和相关工具,来进行程序的开发和调试。 学生在学习面向对象编程基础的过程中,会通过实践课程设计和项目实践,来提高他们的编程能力和问题解决能力。他们会学习如何设计和实现简单的面向对象的程序,如学生成绩管理系统、图书管理系统等,从而更好地理解和掌握面向对象编程基础知识和方法。 通过面向对象编程基础课程的学习,学生将能够掌握Java语言的基本语法和面向对象编程的基本概念,提高他们的编程能力和问题解决能力,为以后的学习和工作打下扎实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值