Java入门基础知识要点②

目录

面向对象编程(一)

1.方法(函数)

1.1方法的定义

1.2方法的调用

1.3方法重载

2.面向对象

2.1面向对象本质

2.2继承、封装和多态

2.3类与对象

2.3.1 类

2.3.2 对象

2.3.3 类和对象

2.3.4 类的定义

类的成员——属性

类的成员——方法

关于Public class与class声明类的区别:

对象内存分配

面向对象编程(二)

1.构造方法

2.this 关键字

3.包

4.方法及参数传递

文章参考


面向对象编程(一)

1.方法(函数)

1.1方法的定义

🍓🍓方法在很多地方被称为函数(在Java中英文单词是Method,而在其他语言中为function),方法是一段可以被重复调用的代码块,实现一个功能,一个动作或一种行为

//方法定义格式
修饰符 返回值类型 方法名称( [ 参数类型 参数变量, ... ]) {
	方法体(本方法要执行的若干操作) ;
	[ return [返回值] ; ]
}


//案例
public class text1 {
    public static void main(String args[]) {
        printInfo(); 		// 直接调用方法
    }
    public static void printInfo() {	// 定义没有参数,没有返回值的方法
        System.out.println("hello world");

    }
}

1.2方法的调用

🍓🍓我们经常会根据一个方法产生的结果,去组织另外一段代码逻辑,为了获得该方法产生的结果,就需要方法能够将结果返回。

//实例
public class text {
    public static void main(String args[])
    {
        boolean is;
        is = compare(40,40);
        System.out.println("比较的结果是:"+is);
    }
    public static boolean compare(int x,int y){
        return x==y;
    }
}


//运行结果
比较的结果是:true

方法注意:

1.方法不能嵌套定义

2.方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写,如果要编写return,后面不能跟具体的数据。

3.return语句下面,不能编写代码,因为永远执行不到,属于无效的代码。

1.3方法重载

在同一个类中的多个方法,它们的方法名相同,参数列表不同,这样的情况,称为方法重载。方法重载与修饰符和返回值类型无关。

参数列表不同:个数不同、类型不同或顺序不同。

2.面向对象

概述:

面向对象(OOP):Object Oriented Programming

面向过程(POP):Procedure Oriented Programming

1.面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。

2.面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。

面向对象和面向过程的区别:
主要在于做事方式的不同,一个关注事物(对象),另一个关注于过程(步骤)。

2.1面向对象本质

  • 思想:把人们从执行者转化为指挥者。
  • 开发:创建对象->寻找对象->使用对象->指挥对象。
  • 三个主要特征:继承,封装,多态。

2.2继承、封装和多态

继承:子类继承父类,对原有类中的功能进行调用或进行拓展。

封装:面向对象的方法遵循的重要原则,具有两层含义。

  • 将对象的属性和行为包装(封装)为一个对象。
  • 信息隐蔽,一些属性和行为为外界只读,不能改变。另一些属性或行为不允许外界访问。即只能拿来用,尽可能隐蔽对象的功能实现细节。

🍓🍓封装是面向对象编程的特点之一,将对象的属性和方法封装起来,其载体是,类通常对客户隐藏其实现细节,这就是封装的思想。

常见场景:某些类/方法被private修饰,除了本类,其他类无法正常访问。

Java中通过将数据声明为私有的(private),再提供公共的(public)方法:getXXX()和setXXX()实现对该属性的操作

  • 隐藏一个类中不需要对外提供的实现细节;
  • 使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作
  • 便于修改,增强代码的可维护性;
  • 🍓🍓开发中,针对属性有这样一种定义:所有在类中定义的属性都要求使用private声明,如果属性需要被外部所使用,那么按照要求定义相应的setXXX、getXXX方法。
  • 🍓🍓setXXX方法主要是设置属性内容,public void setTitle(String t),有参;
  • 🍓🍓getXXX方法主要是取得属性内容:public String getTitle( ),无参;

案例:

class Book { 					// 定义一个新的类
    private String title; 		// 书的名字
    private double price; 		// 书的价格
    public void setTitle(String t) {	// 设置title属性内容
        title = t;
    }
    public void setPrice(double p) {	// 设置price属性内容
        if (p > 0.0) {		// 进行数据验证
            price = p ;
        }
    }
    public String getTitle() {	// 取得title属性内容
        return title;
    }
    public double getPrice() {	// 取得price属性内容
        return price;
    }
    public void getInfo() { 		// 此方法将由对象调用
        System.out.println("图书名称:" + title + ",价格:" + price);
    }
}
public class text1{
    public static void main(String args[]) {
        Book book = new Book();		// 声明并实例化对象
        book.setTitle("Java开发");		// 设置属性内容
        book.setPrice(-89.9);			// 设置属性内容
        book.getInfo();			// 调用方法
    }
}

多态:程序允许重名现象,一个类中定义的属性方法被其他类继承之后,他们可以具有不同的数据类型或表现出不同的行为,使得同一个属性和方法在不同的类中具有不同的语义

2.3类与对象

面向对象分析方法分析问题的思路和步骤:

  • 根据需求选择问题针对现实世界的实体
  • 确定实体的属性和方法,属性和方法构成概念世界的类
  • 在计算机中完成类的定义
  • 类实例化为计算机世界中的对象,对象是计算机解决问题的最终工具。
2.3.1 类

本质:类是一系列具有相同属性和行为的事物的统称。

java中描述一个事物:

  • 总结该事物的共性属性和功能(方法)->概念类。
  • 将该概念类转化为计算机中的类,转化方式(继承父类进行拓展/自己重新定义) ->实体类。
  • 需要使用该类时候需要实例化一个方法,该方法就是类的实体 ->实例化的类 == 对象

我们在现实世界中看到的其实都是对象。

2.3.2 对象

本质:万物皆是对象,对象表示的是一个个独立的个体。

对象:动态部分(方法)+静态部分(属性)。

2.3.3 类和对象

面向对象程序设计的重点是类的设计。类的设计,其实就是类的成员的设计。

类:用来描述特征信息及功能等,不能实际使用。

对象:根据类的描述创造出来的,可以实际使用。

2.3.4 类的定义

定义类的过程,就是把一系列相关事物共同的属性和行为抽取出来的过程。

属性 ->成员变量

行为 ->成员方法

//类的定义

【修饰符】 class  类名称{
	成员变量定义;          //属性
	成员方法定义;	      //行为	
}


对于类(class)的权限修饰:可以用public和default(缺省)
public类可以在任意地方被访问;
default类只可以被同一个包内部的类访问。
类的名称符合合法的标识符定义。
类的成员——属性

属性 = 成员变量 = field = 域、字段

语法格式:修饰符 数据类型 属性名 ;
或 修饰符 数据类型 属性名 = 初始化值 ;

说明1: 修饰符
常用的权限修饰符有:private、缺省、protected、public
说明2:数据类型
任何基本数据类型(如int、Boolean) 或 任何引用数据类型。
说明3:属性名
属于标识符,符合命名规则和规范即可。

类的成员——方法

成员方法 = 函数 = method

权限修饰符 返回值类型 方法名[参数类型 参数名1, 参数类型 参数名2……]){
//方法体语句
[ return 返回值;]
}

成员方法的格式说明 :
除了权限修饰符不加Static以外,其他同一般方法。

关于Public class与class声明类的区别:

public class:文件名称必须与类名称保持一致,在一个*.java文件里面只能够有一个public class声明,称为主类,如果一个类需要被不同的包所访问,那么一定要定义为public class;
- class:文件名称可以与类名称不一致,并且一个*.java文件里面可以有多个class定义,编译后会形成多个*.class文件,这个类只能够被本包所访问。

  • 操作类结构:

    • 对象.属性:表示要操作类中的属性内容;
    • 对象.方法():表示要调用类中的方法。
//实例

class Book { 					// 定义一个新的类
    String title; 				// 书的名字
    double price; 				// 书的价格
    public String getInfo() { 			// 此方法将由对象调用
        return "图书名称:" + title + ",价格:" + price);
    }
}
public class text1 {
    public static void main(String args[]) {
        Book bk = new Book() ;		// 声明并实例化对象
        bk.title = "Java开发" ;	 	// 操作属性内容
        bk.price = 89.9 ;			// 操作属性内容
        System.out.println (bk.getInfo()) ;	 // 调用类中的getInfo()方法
    }
}

对象内存分配

类本身属于引用数据类型,对于引用数据类型的执行分析就必须结合内存操作来看:

  • 堆内存(heap):保存每一个对象的属性内容,堆内存需要用关键字new才可以开辟,如果一个对象没有对应的堆内存指向,那么将无法使用;
  • 栈内存(stack):保存的是一块堆内存的地址数值,可以把它想象成一个int型变量(每一个int型变量只能存放一个数值),所以每一块栈内存只能够保留一块堆内存地址;

面向对象编程(二)

1.构造方法

定义:🍓🍓在类中除了成员方法之外,还存在一种特殊类型的方法,那就是构造方法,就是专门用来创建对象的方法,当通过new关键字创建对象时,其实就是在调用构造方法

类名称 对象名称 = new 类名称()

  • 类名称: 规定了对象的类型,即对象可以使用哪些属性与方法,都是由类定义的;
  • 对象名称: 如果要想使用对象,需要一个名字,这是一个唯一的标记;
  • new:开辟新的堆内存空间,如果没有此语句,对象无法实例化;
  • 类名称():调用了一个和类名称一样的方法,这就是构造方法;

说明:
1、public:构造方法修饰符;
2、构造方法方法名类名相同;
3、构造方法在实例化新对象(new)的时候调用一次
4、构造方法没有返回值类型说明,不需要用void修饰符;
5、在构造方法中可以为成员变量赋值

1.如果想改变默认成员属性的初始化值,让系统创建对象时就为该对象的成员属性显式地指定初始值,可以通过构造方法来实现。

2.缺省构造方法:进行对象初始化操作,默认初始化值

说明:
1、构造方法的核心作用:实例化对象时设置设置属性的初始值
2、一个类中至少保留一个构造方法;(若一个也未定义,系统会自动生成默认的无参构造方法)。

2.this 关键字

this 关键字的作用:

  • 调用本类属性:局部变量与成员变量同名。
  • 调用本类方法:在一个类之中,可以使用this调用两种方法(普通方法构造方法),而在要调用本类方法也就分为两种形式:
  • 调用本类普通方法:如果现在要调用的是本类方法,则可以使用“this.方法()”调用;
  • 调用本类构造方法:在一个构造方法中要调用其他构造方法使用“this(【参数列表】)”调用。

1.可以在类的构造方法中使用“this(形参列表)”的方式,调用本类中重载的其他的构造器;
2.明确:构造方法中不能通过“this(形参列表)”的方式调用自身构造方法;
3.如果一个类中声明了n个构造方法,则最多有 n - 1个构造方法中使用了“this(形参列表)”;
4.“this(形参列表)”必须声明在类的构造方法的首行;
5.在类的一个构造方法中,最多只能声明一个“this(形参列表)”;

3.包

本质:一个程序由多个不同的程序包组成。(依据功能不同做区分的文件夹)

包注意点:

  • 包名必须遵循标识符命名规则,通常用小写并且尽量“见名知意”;
  • 将Hello程序类定义在了一个“javase.ch3.demo”的包中;(在定义包的时候出现了“.”,那么就表示子目录, 即javase\ch3\demo );
  • 同一个包下,不能命名同名的类

包的导入:

import 包.类

//例子
package demo02;
import  demo03.*; 		// 自动导入demo03包中所需要的类
public class TestMessage {
	public static void main(String args[]) {
		Message msg = new Message();	// 实例化对象
		msg.getMessage();			// 调用方法
	}
}

4.方法及参数传递

Java 中方法的参数主要有3种,分别为值参数引用参数可变参数

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

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

3、可变参数
🍓🍓声明方法时,如果有若干个相同类型的参数,可以定义为可变参数,该类型的参数声明如下:
🍓🍓权限修饰符 返回值类型 方法名(参数类型… 参数名)

注意:

  • 参数类型和参数名之间是三个点,而不是其他数量或省略号;
  • 可变参数调用时,固定参数部分不影响,可变参数部分跟数组一样;

文章参考

文章是自己针对于参考博文的知识点的学习和添加自己的理解和总结。

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值