Java面向对象编程基础详解(Java必备知识)

Java是面向对象的编程语言,类与对象是面向对象编程的重要概念,实质上可以将类看作是对象的载体,它定义了对象所具有的属性和行为。

面向对象概述

面向对象思想是人类最自然的一种思考方式,它将所有预处理的问题抽象为对象,同时了解这些对象具有哪些相应的属性及行为,以解决这些对象面临的一些实际问题,面向对象设计实质上就是对现实世界的对象进行建模操作。

对象

对象是一个抽象概念,英文称作“Object”,表示任意存在的事物。通常对象划分为两个部分,即静态部分与动态部分。静态部分被称为属性,例如人的性别,动态部分指的是对象的行为,例如人可以行走。

类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。在Java语言中,类包括对象的属性和行为。类中对象的属性是以成员变量的形式定义的,对象的行为是以方法的形式定义的。

面向对象程序设计的特点

封装

将对象的属性和行为封装起来,其载体就是类,类通常会对客户隐藏其实现细节,这就是封装思想,例如使用计算机时,只需要使用手指敲击键盘就可以实现一些功能,无须知道计算机内部是如何工作的。

采用封装的思想保证了类内部数据结构的完整性,使用该类的用户不能轻易地直接操作此数据结构,只能操作类允许公开的数据。这样就避免了外部操作对内部数据的影响,提高了程序的可维护性。

继承

可以说子类的实例都是父类的实例,但不能说父类的实例是子类的实例。继承是实现重复利用的重要手段,子类通过继承,复用父类属性和行为的同时又添加了子类特有的属性和行为。

多态

将父类对象应用于子类的特征就是多态,子类继承父类特征的同时,也具备了自己的特征,并且能够实现不同的的效果,这就是多态化的结构。

类与对象

成员变量

在Java中对象的属性也称为成员变量,成员变量的定义与普通变量的定义一样。

数据类型 变量名称 [=];

定义变量可以为其赋值,也可以不为其赋值。如果不设置初始值,就会有默认值。

扫描二维码关注公众号,回复: 12850908 查看本文章
public class Test30 {
    
    
	// 实例成员变量
    private boolean bool;
    private byte b;
    private short s;
    private char c;
    private int i;
    private long l;
    private float f;
    private double d;
    private String str;
    private String[] strArray;
 
    public void printInstance() {
    
    
        System.out.println("实例成员变量默认值:");
        System.out.println("boolean:" + bool);
        System.out.println("byte:" + b);
        System.out.println("short:" + s);
        System.out.println("int:" + i);
        System.out.println("long:" + l);
        System.out.println("float:" + f);
        System.out.println("double:" + d);
        System.out.println("String:" + str);
        System.out.println("String[]:" + strArray);
        System.out.println("char:" + c);
    }
    
    public static void main(String[] args) {
    
    
    	Test30 dv = new Test30();
        dv.printInstance();
    }
}

运行效果:

成员方法

成员方法对应于类对象的行为,他主要用来定义类可执行的操作。

权限修饰符 返回值类型 方法名 (参数类型 参数名){
    
    
	return 返回值;
}

定义方法时如果没有指定权限修饰符,方法的默认访问权限为缺省(即只能在本类及同一个包中的类中进行访问)

成员方法的参数

调用方法时可以给该方法传递一个或多个值,传给方法的值叫做实参,在方法内部接受实参的变量的叫做形参。形参只在方法内部有效,Java中方法的参数主要有3种,分别为值参数、引用参数和不定长参数。

成员方法是不带static的,但是为了测试,所以方法都带了static。

值参数

值参数表名实参与形参之间按值传递,当时用值参数的方法被调用时,编译器会为形参分配存储单元,然后将对应的实参的值复制到形参中,由于是值类型的传递,所以在方法中对值类型的形参修改并不会影响到实参。

引用参数

如果在给方法传递参数时,参数的类型是数组或者其他引用类型,那么,在方法中对形参的修改会反映到原有的数组或者其他引用类型上,这种类型的方法参数被称为引用参数。

不定长参数

声明方法时,如果有若干个相同类型的参数,可以定义为不定长参数。参数类型和参数名之间是三个点,而不是其他数量或省略号。

构造方法

在类中除了成员方法之外,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每当实例化一个对象时,类都会自动你调用构造方法。
构造方法的特点如下:
构造方法没有返回类型,也不能定义为void。
构造方法的名称要和本类的名称相同。
构造方法的主要作用是完成对象的初始化工作,他能把定义对象的参数传给对象成员。

语法如下:

class Book {
    
    
	public Book() {
    
     
	}
}

如果类中没有明确定义构造方法,则编译器会自动创建一个不带参数的默认构造方法。如果类中都是有参构造方法,则编译器不会为类自动动生成一个默认的无参构造方法。

局部变量

如果在成员方法内定义一个变量,那么这个变量被称为局部变量。
局部变量在方法执行时被创建,在方法执行结束时被销毁。局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误。

类成员变量和成员方法可以统称为类成员,如果一个方法中含有与成员变量同名的局部变量,则方法中对这个变量的访问以局部变量的值为准。

在互相不嵌套的区域可以定义同名同类型的局部变量。

this关键字

如果方法中出现了与局部变量同名的参数,会导致方法无法直接使用成员变量。

在Java语言中规定使用this关键字来代表本类对象的引用,this关键字被隐式地用于引用对象的成员变量和方法。
在这里插入图片描述
this关键字除了可以调用成员变量或成员方法之外,还可以作为方法的返回值。
在这里插入图片描述

this不仅可以调用类的成员变量和成员方法,此外,他还可以调用类的构造方法。

static关键字

由static修饰的变量、常量和方法分别被称作静态变量、静态常量和静态方法,也被称作类的静态成员。

static关键字

在Java程序中,如果把共享的变量用static修饰,那么该变量就是静态变量。
调用静态变量的语法如下:

类名.静态类成员

静态方法

如果想要使用类中的成员方法,需要先将这个类进行实例化,但有时候不想或者无法创建类的对象时,还要调用类中的方法才能够完成业务逻辑,这种情况下就可以使用静态方法。
调用类的静态方法语法如下:

类名.静态方法();

静态代码块

在类的成员方法之外,用static修饰代码区域可以称之为静态代码块。定义一块静态代码块可以完成类的初始化操作,在类声明时就会运行。

public class StaticTest {
    
    
	static {
    
    
			// 此处编辑执行代码
	}
}

类似于关于static的,面试笔试经常会出现

类的主方法

主方法是类的入口点,他指定了程序从何处开始,提供对程序流向的控制。Java编译器通过值方法来执行程序。

主方法语法如下:

public static void main(String args[]){
    
    

}

主方法是静态的,所以如要直接在主方法中调用其他方法,必须是静态方法。
主方法没有返回值
主方法的形参为数组,其中arg[0] - args[n]分别代表程序的第一个参数到第n+1个参数。

难点解答

局部变量和全局变量

其实所有的变量都是局部变量,只是根据变量的有效范围不同而产生不同的叫法,例如非静态全局变量和静态变量。非静态全局变量的有效范围是整个类体,当类销毁后这些全局变量会同时销毁。静态变量的作用范围则是整个程序的生命周期,只有当程序结束之后,静态变量才会销毁。

猜你喜欢

转载自blog.csdn.net/weixin_43888891/article/details/113488671