目录
项目一方法的定义与应用
定义方法
知识储备
实操
调用方法和传递参数
知识储备
实操
方法重载
知识储备
实操
项目二类的识别与封装
初识面向对象
知识储备
定义类和创建对象
知识储备
实操
使用实例构造函数
知识储备
实操
项目三类继承和多态的实现
实现类的继承和子类构造函数
知识储备
实操
抽象类和接口
知识储备
实操
项目四程序的异常处理
认识异常和异常处理
知识储备
实操
项目一方法的定义与应用
定义方法
知识储备
概述:
- JAVA类的其中一个成员就是方法(函数),方法是一个独立的功能模块;
- 类中可以有多个方法,其中main方法(主方法)最多只能有一个,是程序执行的入口;
- 利用“方法”可以实现代码复用(可以多次调用),使程序结构清晰。
方法定义的形式:
[修饰符] [方法类型] [方法名]([形参类型 形参名, ...]){
声明部分;
语句部分;
}
说明:
- 方法类型:方法返回值的类型;如果没有返回值,类型为void
- 形参:形式参数,是方法的“输入”。
- 声明部分:包括变量、数组的定义等
- 语句部分:是方法功能的实现。
- 方法的返回值:是方法的“输出”,返回给方法调用。实现形式:return表达式;如果方法类型是void,则没有return语句或return
例题:
定义方法实现1+2+3+...+n:
讯享网
定义方法实现1-
+
-
...+
:
实操

讯享网
调用方法和传递参数
知识储备
形式:
方法名(实参1,实参2,…)
说明:
方法调用时实参要与形参一 一对应。
非静态方法:
- 需要通过类的实例调用
- 方法调用可以放在表达式里
- 输出调用
- 作为另一个方法调用的实参调用
静态方法:
- 可以通过类名直接调用,不需要创建类的实例。
- 方法调用可以放在表达式中,也可以作为其他方法调用的实参printDouble(getStaticNumber())。
注:无返回值的方法只能单独作为一条语句,不能放在表达式中或者输出语句里。
示例:
非静态方法的调用:【只能通过对象调用 (对象名.方法名)】
静态方法的调用:【可以直接调用,类名调用和对象调用(类名.方法名 / 对象名.方法名)】
参数传递方式一一单向值传递:
方法调用时,先计算实参的值
将此值传递给(赋给)形参
形变实不变
注:不同方法内的变量名可以是相同的 没有返回值的方法调用不参与运算
变量作用域:
全局变量:
在方法以外定义。
作用域是整个类。
局部变量:
在方法内部或复合语句内部定义·
作用域是本方法或复合语句内。
值类型和引用类型
值类型变量存放的是数据本身
引用类型变量存放的是数据的引用(即地址)
实操
1.判断一个字符是不是数字
2.判断一个数是否是偶数
3.判断一个字符是否是大写/小写/字母
方法重载
知识储备
- 同一个类中,方法名相同
- 形参类型、形参个数不同
- 不包括:方法返回值类型和形参名称
实操

项目二类的识别与封装
初识面向对象
知识储备
- 面向:拿、找
- 对象:能干活的东西
- 面向对象编程:拿东西过来做对应的事情
面向对象三个基本原则:封装、继承、多态
定义类和创建对象
知识储备
- 类(设计图):是对象共同特征的描述;
- 对象:是真实存在的具体东西。
在Java中,必须先设计类,才能获得对象
定义类:
public class 类名{
1、成员变量(代表属性的,一般是名词)
2、成员方法(代表行为的,一般是动词)}
注意事项:
- 类名首字母建议大写,需要见名知意,驼峰模式。
- 一个Java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。实际开发中建议还是一个文件定义一个class类。
- 成员变量的完整定义格式是:修饰符数据类型变量名称=初始化值;一般无需指定初始化值,存在默认值。
创建对象:
类名 对象名 = new 类名();
Phone p = new Phone();
拿到对象之后可以:
- 对象.成员变量;
- 对象.成员方法(...)
this关键字:
修饰符:
- 访问修饰符:
- :方法可以被任何其他类访问。
- :方法可以被同一个包中的类和不同包中的子类访问。
- :方法只能在定义它的类内部访问。
- (没有指定时的访问级java对象的计算常见基础问题别):方法只能被同一个包中的类访问。
- 非访问修饰符:
- :静态方法可以在没有创建类的实例的情况下被访问,它属于类而不是类的实例。
- :最终方法不能被子类覆盖。
- :抽象方法必须在抽象类中声明,并且必须由子类实现。
- :同步方法确保多个线程在同一个时刻只能有一个线程执行该方法。
- :本地方法在Java外部实现,通常是用C或C++编写的。
实操
设计Student类:定义相应的字段和方法。要求:1)在主类中创建Student 类的对象;2)通过该对象调用实例方法,设置该Student对象的各个字段,并打印显示该对象信息。
使用实例构造函数
知识储备
构造函数:
1、它是类的一种特殊方法,方法名与类名相同(大小写也要一致)
2、没有返回类型,连void都没有
3、可以重载。带参构造方法,和无参数构造方法,两者方法名相同,但是参数不同,这叫做构造方法的重载
4、不允许用户显式地直接调用,只能紧跟new之后调用
5、在创建实例对象时,系统自动调用该类的构造函数为新对象初始化
6、若用户未定义任何构造函数,系统将为这个类缺省定义一个空构造函数,
形式如下:
public 类名(){}
7、若用户定义了构造函数,则系统将不再提供缺省的构造函数
8、也叫构造方法、构造器
无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法
标准的bean类:

①类名需要见名知意
②成员变量使用private修饰
③提供至少两个构造方法
- 无参构造方法
- 带全部参数的构造方法
④成员方法
提供每一个成员变量对应的setXxx()/getXxx()
如果还有其他行为,也需要写上
实操
设计平面直角坐标系下的Point类:定义相应的字段和方法。要求:在主方法中创建两个Point类的对象,调用各方法完成设置两点坐标、计算两点间距离、屏幕打印点坐标信息等功能。
项目三类继承和多态的实现
实现类的继承和子类构造函数
知识储备
概念:
- 继承是指从现有类(基类、父类、超类)中派生出新类(派生类、子类)的过程
- 子类自动地包含父类中的全部字段和方法(构造函数除外)
- 可以在子类中增加新的字段和方法,或修改所继承的字段和方法
注意:
- Java是单继承的:一个类只能继承一个直接父类;Java中的类不支持多继承,但是支持多层继承。
- Object类是java中所有类的祖宗
定义子类:
方法重写:
当子类觉得父类中的某个方法不好用,或者无法满足自己的需求时,子类可以重写一个方法名称、
参数列表一样的方法,去覆盖父类的这个方法,这就是方法重写。
注意:重写后,方法的访问,Java会遵循就近原则。
技巧:
- 使用Override注解,他可以指定java编译器,检查我们方法重写的格式是否正确,代码可读性也会更好。
- 子类重写父类方法时,访问权限必须大于或者等于父类该方法的权限(public>protected>缺省)。
- 重写的方法返回值类型,必须与被重写方法的返回值类型一样,或者范围更小。
- 私有方法、静态方法不能被重写,如果重写会报错的。
示例:
public class A {
public void print1(){
System.out.println("111);
}
public void print2(int a,int b){
System.out.println("");
}@Override
public void print1(){
System.out.println("666");
}
//方法重写@Override
public void print2(int a,int b){
System.out.println("");
}
子类访问的特点:
在子类方法中访问其他成员(成员变量、成员方法),是依照就近原则的。
可以通过super关键字,指定访问父类的成员:super.父类成员变量/父类成员方法
子类构造器的特点:
子类的全部构造器,都会先调用父类的构造器,再执行自己。
- 默认情况下,子类全部构造器的第一行代码都是supr()(写不写都有),它会调用父类的无参数构造器。
- 如果父类没有无参数构造器,则我们必须在子类构造器的第一行手写supr(.…),指定去调用父类的有参数构造器。
示例:
this(.…)调用兄弟构造器:
任意类的构造器中,是可以通过this(…)去调用该类的其他构造器的。

实操
设计一个Shape2D类、Circle类、Rectangle类、Square类。Circle类、Rectangle类继承Shape2D类,Square类继承Rectangle类
抽象类和接口
知识储备
抽象类:
abstract修饰类,这个类就是抽象类;修饰方法,这个方法就是抽象方法。
public abstract class A {
//抽象方法:必须abstract修饰,只有方法签名,不能有方法体。
public abstract void test();}
特点:
- 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。
- 类该有的成员(成员变量、方法、构造器)抽象类都可以有。
- 抽象类最主要的特点:抽象类不能创建对象,仅作为一种特殊的父类,让子类继承并实现。
- 一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。
- 抽象类可以有构造函数(只是为了初始化字段)
- 抽象类也可以继承非抽象类
- 抽象类也可以实现接口
好处:
父类知道每个子类都要做某个行为,但每个子类要做的情况不一样。父类就定义成抽象方法,交给子类去重写实现,我们抽出这样的抽象类,就是为了更好的支持多态。
对抽象类和抽象方法的限制
(1)构造函数不能是抽象的
(2)定义为static、final或private的方法不能是抽象的
(3)最终类(final)不能同时为抽象类
示例:
某宠物游戏,需要管理猫、狗的数据。
猫的数据有:名字;行为是:喵喵喵的叫~
狗的数据有:名字;行为是:汪汪汪的叫~



接口
public interface 接口名{
//成员变量(常量)
//成员方法(抽象方法)}
接口可视为特殊的抽象类,它由常量和抽象方法组成,不能被实例化。
接口中的常量——隐含为public static final,必须初始化,方法——隐含为public abstract
接口采用多重继承机制,即接口可以同时继承多个接口。用途:将多个接口组合成一个接口
一个类只能继承一个父类,但可以同时实现多个接口,这样可以达到多重继承的效果(extends要放在implements之前)
接口不能创建对象;接口是用来被类实现(implements)的,实现接口的类称为实现类。
修饰符 class 实现类 implements 接口1,接口2,接口3,...{
}
实现类实现多个接口,必须重写完全部接口的全部抽象方法,否则实现类需要定义成抽象类。
好处:
- 因为通过接口去找干爹,别人通过你implements的接口,就可以显性的知道你是谁,从而也就可以放心的把你当作谁来用了。
- 一个类我们说可以实现多个接口,同样,一个接口也可以被多个类实现的。这样做的好处是我们的程序就可以面向接口编程了,这样我们程序员就可以很方便的灵活切换各种业务实现了。
实操
编写一个程序完成以下接口和类:














项目四程序的异常处理
认识异常和异常处理
知识储备
异常是把代码中的错误传递给调用方代码的一种特殊手段。如果在一个子程序中遇到了预料之外的情况,但不知道该如何处理的话,它就可以抛出一个异常。
抛出异常(throws):
方法 throws 异常1,异常2,异常3 ..{
...
}
捕获异常(try..catch) :
try{
//监视可能出现异常的代码!
}catch(异常类型1变量){
//处理异常
}catch(异常类型2变量){
//处理异常
}…
自定义异常 :
运行时
- 定义一个异常类继承RuntimeException
- 重写构造器。
- 通过throw new异常类(xxx)来创建异常对象并抛出。
编译阶段不报错,提醒不强烈,运行时才可能出现!
编译时
- 定义一个异常类继承Exception.
- 重写构造器。
- 通过throw new异常类(xx)来创建异常对象并抛出。
编译阶段就报错,提醒更加强烈!
示例:
保存一个合法的年龄
实操
检验输入数据非法和超界[0,100]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/9380.html