补Java基础之重生(10)面向对象:类与对象(上)

一、开发方法

1. 结构化开发:

注重过程,自上而下的开发流程。

  • 面向功能划分软件结构;
  • 自上而下的开发流程;
  • 最小的是子系统是方法
  • 制约了软件的可维护性和可扩展性
    优点:流程明确
    缺点:不易程序的扩展或者是重用

2. 面向对象开发:

要找一个对象,不需要关心做的整个过程,只关注结果。

  • 把软件系统堪称各种对象的集合
  • 系统结构稳定
  • 子系统相对独立
  • 软件可重用性、可维护性和可扩展性强

二、对象

1、对象的定义

对象是客观存在的实体,包括自然景观、动植物、人、物品等(万物皆对象)。
对象具有两类特征。一类是描述对象的客观属性,一类是描述对象的动态行为的。

(1)对象的特征-属性
  • 属性是对象具有的各种特征。
  • 每个对象的每个属性有特定的值。
(2)对象的特征-方法
  • 方法是对象执行的操作。
  • 对象是用来描述客观事物的一个实体,由一组属性和方法组成。

三、类

类是认识的世界,改造客观世界的过程中,把具有相同特征的一类对象进行了分类划分产生的。

  • 动物:小猫、小狗、鱼
  • 植物:花、草、树木
  • 景观:双子塔、峨眉山、青城山
    Java中的类,是提取的一批对象身上所具有的共同属性与方法,抽象总结而来的。
    例子:
/**
	* user:liaoxinyue
	**/
	//Student是自定义类
public class Student {
				//				静态特征:属性
				int    stuNum;//学号
				String name;//姓名
				int    age;//年龄
				String sex;//性别
				
				//				动态特征:方法
//				public 访问修饰符 全局
//				void:方法的返回值得数据类型
//				学习的方法
				public void study ( ) {
								System.out.println ( name + "在学习" );
				}
				
				public void homework ( ) {
								System.out.println ( name + "交作业" );
				}
}

四、类与对象的关系

  • 对象是一个具体的看得见摸得着的实体。
  • 类是一个抽象的概念,是有一堆具有共同特征的对象身上抽取一些共同特征定义而来的。
  • 类是对象的抽象,对象是类的实例。
  • 类是对象的模板,对象是类的实例。

例子:
代码如下:
自定义一个学生类

/**
	* user:liaoxinyue
	**/
public class Student {
				//				静态特征:属性
				int    stuNum;//学号
				String name;//姓名
				int    age;//年龄
				String sex;//性别
				
				//				动态特征:方法
//				public 访问修饰符 全局
//				void:方法的返回值得数据类型
//				学习的方法
				public void study ( ) {
								System.out.println ( name + "在学习" );
				}
				
				public void homework ( ) {
								System.out.println ( name + "交作业" );
				}
				
				//				静态方法:方法的定义
				public void speak ( ) {
								System.out.println ( "大家好,我是" + name + ",我的学号是" + stuNum + ",我是" + sex + "生,我的年龄是" + age );
								
				}
}

实例化一个学生对象:

/**
	* user:liaoxinyue
	**/
public class Manager {
				public static void main ( String[] args ) {
//								实例化一个对象,创建一个学生对象
//								Student是学生类名,student是自定义的对象名称
								Student student = new Student ( );
//								给对象的属性赋值
								student.name   = "lxy";
								student.sex    = "女";
								student.stuNum = 202340198;
								student.age    = 22;
//								方法的调用
								student.speak ( );
				}
}

运行结果如下:
在这里插入图片描述

五、类的方法

类的方法定义为类的某种行为(或功能)。方法是一种用于执行特定任务或操作的代码块,就是一个功能,它可以接收数据进行处理,并返回一个处理后的结果。

  • 返回值:方法中有返回值的情况,没有返回值的情况。
  • 有返回值的:类型可以定义为基本数据类型,引用数据类型(自定义的数据类型)。一定使用return关键字来返回!
  • 返回的类型需要和方法的类型保持一致!
  • 无返回值的:使用void来表示。
  • 没有返回类型的方法不能使用一个变量来接收!
    方法的完整定义格式:

修饰符 返回值类型 方法名(形参列表){
方法体代码(需要执行的功能代码)
return 返回值;
}

六、方法的调用

分为两种情况:

1. 在同类中方法的调用

方法必须被调用才能执行,调用格式:方法名称(数据)
在同类的方法中调用其他方法,直接在方法中写需要调用的方法名字+小括号即可;
优点:

  • 提高了代码的复用性,提高了开发效率
  • Java项目几乎就是一个一个方法组成的,每一个方法是一个功能,这样能够使程序的逻辑更清晰(可读性、可维护性也更好)
    例子1:
package Method;

/**
	* user:liaoxinyue
	**/
public class MethodDemo1 {
				public static void main ( String[] args ) {
//								目标:掌握方法的完整格式
//								调用方法的格式:方法名称(数据)
								int max=getMax ( 1,3 );
								System.out.println ("较大值为:"+max );
				}
				
				public static int getMax ( int a , int b ) {
								int max = a > b ? a : b;
								return max;
				}
}

运行结果:
在这里插入图片描述

例子2:

package Animal;

/**
	* user:liaoxinyue
	**/
public class Dog {
				String name;//名字
				String strain;//品种
				String color;//品种
				
				public void eat ( ) {
								System.out.println ( "狗狗在吃东西" );
								sleep ( );
								int re=sum ();
								System.out.println ("结果为:"+re );
				}
				
				public void sleep ( ) {
								System.out.println ( "狗狗在睡觉" );
				}
				public int sum(){
								return 10+20;
				}
}

运行结果:
在这里插入图片描述

2. 不同类中的调用

方法的其他形式:需要按照方法解决的实际业务需求,来设计合理的方法形式解决问题。
必须实例化对象操作后,然后通过对象.方法名()进行调用。
例子1:

package Method;

/**
	* user:liaoxinyue
	**/
public class MethodDemo2 {
				public static void main ( String[] args ) {
//								目标:理解方法的其他定义形式
								printHelloWorld ();
				}
//				方法如果不需要接收数据:形参列表可以不写
//				方法如果不需要返回数据,返回类型必须声明为void
//				成为:无参数无返回值的方法
				public static void printHelloWorld(){
								System.out.println ("Hello world!" );
								System.out.println ("Hello world!" );
								System.out.println ("Hello world!" );
				}
}

运行结果如下:
在这里插入图片描述
注意事项:

  1. 如果方法不需要返回数据,返回类型必须声明成void(无返回类型声明),此时方法内部不可以使用return返回数据。
  2. 方法如果不需要接收数据,则不需要定义形参,且调用方法时也不可以传数据给方法了。
    例子2:
package Animal;

/**
	* user:liaoxinyue
	**/
public class DogDemo1 {
				public static void main ( String[] args ) {
								Dog dog = new Dog ( );
								dog.eat ( );
								dog.sleep ( );
								
								int sum=dog.sum ();
								System.out.println (sum );
				}
}

3、小练习

需求:模拟实现用户密码管理:输入旧的用户名和密码,如果正确,方有权限更新;从键盘获取新的密码,进行更新。
代码如下:

import java.util.*;

/**
	* user:liaoxinyue
	**/
public class User {
//				用户类
				String name;//用户名
				String password;//密码
				public void Login(){
								System.out.println ("请输入用户名" );
								Scanner input=new Scanner ( System.in );
								String userName=input.next ();
								System.out.println ("请输入你的密码" );
								String userPassword=input.next ();
								if ( name.equals ( userName )&& password.equals ( userPassword ) ){
												System.out.println ("请输入新的密码" );
												String New_userPassword= input.next ( );
												password=New_userPassword;
												System.out.println ("密码修改成功,你的新密码为"+password );
								}else {
												System.out.println ("用户名或者密码不正确,没有权限更新管理员信息!" );
												
								}
				}
				
				public static void main ( String[] args ) {
								User user=new User ();
								user.name="admin";
								user.password="1234";
								user.Login ();
				}
}

运行结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值