目录
一.类和对象
1.1对象
1.2
目录
一.类和对象
1.1对象
1.2类
1.3封装
1.4继承
1.5多态
1.6重写
二.类
2.1成员变量
2.2成员犯法
2.3权限修饰符
2.4局部变量
2.5this关键字
三.类的构造方法
3.1静态变量和静态方法
一.类和对象
1.1对象
对象是事物存在的实体,如人类,书桌,计算机,高楼大厦
对象分为两个部分,动态部分和静态部分。
静态部分:这个部分被称为“属性”任何对象都具备其自身的属性,如一个人的高矮胖瘦,性别,年龄等。
动态部分:这个部分被称为“行为”如一个人可以哭,跳,跑步等。
下图中男孩(boy)、女孩(girl)为类(class),而具体的每个人为该类的对象(object)。
1.2类
类就是同一类事物的统称,如果将现实世界中的一个事务抽象成对象,类就是这类对象的统称。
类是世间的事物的抽象称呼,而对象是这个事物的实体。
类对象的行为是以方法的形式定义的,对象的属性是以成员变量的形式定义的,所以类包括对象的属性和方法。
1.3封装
封装就是面向对象编程的核心思想.将对象的属性和行为包装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想.保证了类内部数据结构的完整性,提高了程序的可维护性。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
面向对象程序设计有这些特点:封装性,继承性,多态性。
public class Dog {
private String name;
private int age;
}
这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。
1.4继承
类之间的这种关系被称为关联.关联主要描述两个人类之间的一般二次关系,继承是关联的一种.(继承性主要利用特定对象之间的共有属性)
继承关系可以用树型关系来表示,父类与子类存在一种层次关系.一个类处于继承体系中,它既可以是其他类的父类,为其他类提供属性和行为,也可以是其他类的子类,继承父类的属性和方法,如三角形既是图形类的子类也是等边三角形的父类。
兔子和羊属于食草动物类,狮子和豹属于食肉动物类。
食草动物和食肉动物又是属于动物类。
所以继承需要符合的关系是:is-a,父类更通用,子类更具体。
虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。
类的继承格式:
class 父类 {
}
class 子类 extends 父类 {
}
1.5多态
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:
多态性是对象多种表现形式的体现。
多态存在的三个必要条件
继承
重写
父类引用指向子类对象:Parent p = new Child();
1.6重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
重写的格式:
参数列表与被重写方法的参数列表必须完全相同,返回类型与被重写方法的返回类型可以不相同。
class Animal{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象
a.move();// 执行 Animal 类的方法
b.move();//执行 Dog 类的方法
}
}
二.类
类对象的行为是以方法的形式定义的,对象的属性是以成员变量的形式定义的,所以类包括对象的属性和方法。
一个类可以包含以下类型变量:
局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。
2.1成员变量
在JAVA中对象的属性也称为成员变量,成员变量可以是任意类型,成员变量的定义与普通变量的定义一样,语法如下:
数据类型 变量名称 [ = 值 ];(表示可选内容,即定义变量时可以其赋值,也可以不为其赋值.
public class Bird {
String wing; //翅膀
String claw; //爪子
String beak; //喙
String feather; //羽毛
}
2.2成员犯法
1.成员方法的定义:
[权限修饰符] [返回值类型] 方法名( [参数类型 参数名] ) [throws 异常类型] {
...//方法体
return 返回值;
}
[权限修饰符] 可以时public,private,protected中的任意一个,也可以不写,主要用来控制方法的访问权限;"返回值类型"指定方法返回数据的类型,可以是任何类型,如果方法不需要返回值,则使用关键字void;一个成员方法既可以有参数,也可以没有参数,参数可以是对象也可以是基本数据类型.
如果定义的方法有返回值,则必须使用return关键字返回一个指定类型的数据;
public int ShowGoods () {
System.out.println("库存商品名称");
return 1;
}
2.3权限修饰符
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
default (默认的): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private (私有的): 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public (公共的): 对所有类可见。使用对象:类、接口、变量、方法
protected (受保护的): 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
2.4局部变量
局部变量:在成员方法内定义一个变量
在方法被执行时创建,在方法执行结束时被销毁.在使用时必须进行赋值操作或被初始化
局部变量必须在方法、构造方法或语句块的开始处声明,可以初始化或不初始化。如果未初始化,则局部变量将包含一个默认值,例如 int 类型的变量默认值为 0。
局部变量只在声明它的方法、构造方法或语句块内可见,其他方法、构造方法或语句块不能访问该局部变量。当方法、构造方法或语句块执行完毕后,局部变量将被销毁,其占用的内存也会被释放。
public String getName() { //定义一个getName()方法
int id =0; //局部变量
setName ("Jave"); //调用类中其他方法
return id+this.name; //设置方法返回值
}
2.5this关键字
this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。
this.属性名称,指的是访问类中的成员变量,用来区分成员变量和局部变量(重名问题)
三.类的构造方法
每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
下面是一个构造方法示例:
public class Puppy{
public Puppy(){
}
public Puppy(String name){
// 这个构造器仅有一个参数:name
}
}
3.1静态变量和静态方法
Java 中的静态变量是指在类中定义的一个变量,它与类相关而不是与实例相关,即无论创建多少个类实例,静态变量在内存中只有一份拷贝,被所有实例共享。
静态变量在类加载时被创建,在整个程序运行期间都存在。
静态变量的定义方式是在类中使用 static 关键字修饰变量,通常也称为类变量。
public class MyClass {
public static int count = 0;
// 其他成员变量和方法
}如果想要使用类中的成员方法,需要将先这个类进行实例化,但有些时候不想或者无法创建类的对象时,还要调用类中的方法才能够完成业务逻辑,此时就可以使用静态方法.
类名.静态方法();
3.2类的主方法
主方法是类的入口点,它定义了程序从何处开始;主方法提供对程序流向的控制,Java编译器通过主方法来执行程序。
主方法的语法如下:
Public static void main(String[] args) {
//方法体
}
有以下特性:
(1)主方法是静态的,所以如要直接在主方法中调用其他方法,则该方法必须也是静态的.
(2)主方法没有返回值.
(3)主方法的形参为数组.