一、类与对象概述:
1、对象
对象:对象是一个抽象概念,英文称作“Object”,表示任意存在的事物,是类的一个实例,有状态和行为。例如,一个人就是一个对象,他的状态有:性别、年龄、国籍等;行为有:走路、跑步、吃饭等。状态描述的是对象的“静态”属性,行为描述的对象的“动态”属性。
2、类
类:类是封装对象的属性和行为的载体,可以反过来说具有相同属性和行为的一些对象实体被称为类。类可以看成是创建 Java 对象的模板,它描述一类对象的行为和状态。
在Java语言中,类包括对象的属性和方法。类中对象的属性是以成员变量的形式定义的,对象的行为是以方法的形式定义的。
3、类与对象的特点:
(1)封装
在面向对象程序设计方法中,封装(英语:Encapsulation)是指类将对象的属性和行为隐藏起来,对客户隐藏其实现细节的思想。封装可以被认为是一个程序的保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。如果想要访问该类的代码和数据,必须通过严格的接口进行。合适的封装可以可以增强代码的易维护性和安全性。
(2)继承
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
子类和父类的继承关系可以这样理解:四边形(F)包括平行四边形、矩形、菱形、梯形(S)。其中S继承了F的一些属性(包括有四条边,内角和为360度等),同时又新添加了一些自己的特有属性和方法(比如平行四边形两对边平行等)。我们可以说平行四边形是四边形,但是不能说四边形是平行四边形。同理,Java中我们可以说子类的实例都是父类的实例,但是不能说父类的实例是字类的实例。
继承实际上是实现重复利用的重要手段,子通过继承,复用父类属性和行为的同时又添加字类特有的属性和行为。提高代码编写效率的同时,保持程序的可延展性,以满足解决各类不同实际问题的需求。
(3)多态
将父类对象应用与子类的特征就是多态,多态是同一个行为具有多个不同表现形式或形态的能力。即同一个事件发生在不同的对象上会产生不同的结果。
我们可以将多态理解为通过同一个接口,使用不同的实例而执行不同操作:比如同样是按下F1查看帮助文档这个事件,在windows对象下弹出的是window的帮助和支持文档,在word文档对象下弹出的就是doc的帮助和支持。操作相同,面向对象不用,结果也不同。在继承了父类特征的同时,子类也具备自己的特性,并且可以表现出不同的能力,这就是多态化的结构。
二、类与对象核心知识
Java中,类是封装对象的属性和行为的载体,定义类使用关键字class:
class 类名称{
//类的成员变量
//类的成员方法
}
Java中,对象的属性以成员变量的形式存在,对象的方法以成员方法的形式存在。
1、成员变量
成员变量:类中,Java对象的属性也称为成员变量是,其定义方法与普通变量定义方法相同:
数据类型 变量名称 [=值]
在类中,成员变量在创建对象的时候实例化,这样成员变量可以被类中成员方法、构造方法和特定类的语句块访问。举个例子:
public class Cat{
String breed; //品种
int age; //年龄
String color; // 颜色
void hungry(){
}
void sleeping(){
}
}
-
定义类的关键字:class
-
类的名称:Cat
-
成员变量:breed、age
-
成员方法:hungry、sleeping
2、成员方法
在Java中成员方法对应与类对象的行为,它主要用来定义可执行的操作,是包含一系列语句的代码块:
(1)成员方法的定义
成员方法定义格式:
[权限修饰符][返回值类型] 方法名 ([参数类型 参数名])[throw 异常类型]{
...//方法体
return 返回值;
}
-
权限修饰符:用来控制放完权限,可以是private,public,protected中任意一个。
-
返回值类型:用来制定方法返回数据的类型,可以是任意类型。
-
void:不需要有返回值的情况下,使用void关键字
-
return关键字:如果定义的方法有返回值,则必须使用return关键字返回一个制定类型的数据,并且返回值类型要与方法返回值的类型一致。
-
一个方法可以有参数,也可以没有参数,参数可以是对象,也可以是基本数据类型的变量。
public void showGoods(){
System.out.println("库存商品名称:");
System.out.println(FullName);
}
public int showGoods(){
System.out.println("库存商品名称:");
//下行代码如果删除则会报错要求必须使用return返回制定类型的结果
return 1;
}
(2)成员方法的参数
调用方法时,可以给该方法传递一个或多个值,传给方法的值叫做实参,在犯法内部,接收实参的变量叫做形参,形参的生命语法与变量的声明语法一致。形参只在方法内部有效。
Java中方法的参数有3种,分别叫做值参数、引用参数和不定长参数。
值参数
值参数表明形参与实参之间按值传递,当使用值参数的方法被调用时,编译器会为形参分配存储单元,然后将对应的实参的值赋值到形参中,由于是值类型的传递方式,所以在方法中对值类型的形参的修改并不会影响实参。
实例1:计算箱子里图书的总数
书架上有30本书,箱子里有40本书,把书架上的书全部放进箱子之后, 使用带参数的成员方法计算箱子里书的总数:
/*
书架上有30本书,箱子里有40本书,把书架上的书全部放进箱子之后,
使用带参数的成员方法计算箱子里书的总数:
*/
public class Book {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建书类对象
Book book = new Book();
//初始化书架上的本输(实参)
int shelf = 30;
//初始化箱子中的本输(实参)
int box = 40;
//把书架子上的书全部放进箱子之后,输出箱子里书的总数
System.out.println("把书架子上的书全部放进箱子之后,"+
"输出箱子里书的总数:"+
book.add(shelf,box) +
"本书。\n明细如下:书架上"+shelf +
"本书,箱子里原有" +box+"本书。");
System.out.println("\n再打印一次实参:");
System.out.println("把书架子上的书全部放进箱子之后,"
+"输出箱子里书的总数:"+book.add(shelf,box) +
"本书。\n明细如下:书架上"+shelf +
"本书,箱子里原有" +box+"本书。");
}
//把书架、箱子里的书本求和(形参)
//没有使用void关键字,要求必须返回制定类型(int)的结果的值
private int add(int shelf,int box