Java学习笔记(三)——面向对象(上)
软件构造
一、对象和类的基本概念
1.对象:一切具体的事物。
2.类:相同或相似对象的一种抽象,是对象的一个模版,描述一类对象的行为和状态,是具有相同属性和方法 (行为)的对象的集合。
类是对象的抽象(模版),对象是类的实体(实例)。
3.属性:对象具有的特征。
4.行为:对象所具有的操作。
二、定义类的方法
- 定义类名,用于区分不同的类。
- 编写类的属性。
- 编写类的方法。 (类的编写过于常见,因此不举例说明了。)
- 类中的类型变量:
- 类中的局部变量与C语言的相同,方法结束后自动销毁。
- 成员变量定义在类中方法体之外,在创建对象的时候实例化。其可以被类中方法、构造方法和特定类的语句块访问。
- 类变量和成员变量大体相同,只不过类变量必须声明为static类型。
- 成员变量与局部变量重名是,局部变量具有更高的优先级。
三、对象的创建与使用
1.创建对象的语法为:
类名 对象名 = new 类名();
如对类People
实例化ShiGuang
People ShiGuang = new People();
注意,这里创建的对象,实际上是对象的一个引用,如果再创建一个对象并将一个已创建对象赋值给它的时候,两个实例的地址是相同的。
2.访问对象的属性
对象名.属性
如
ShiGuang.height = 183;
3.引用对象的方法
对象名.方法
如
ShiGUang.dance();
四、构造方法
构造方法是在创建对象时为对象填充属性时使用的方法。(默认构造方法是无参构造方法)。
1.构造方法的名称与类名相同,且没有返回值。语法格式:
public 构造方法名(){ //方法名与类名相同
//初始化代码
}
如
public class People{
//属性(成员变量)
double height;
int age;
// 构造函数,初始化了所有的属性
public People(double h, int a)
{
height = h;
age = a;
}
如果要创建一个新对象,直接用new + 构造方法
就可以,如
People ShiGuang = new People(182,20);
2.如果定义类时没有写构造方法,系统会默认一个无参构造方法,这个构造方法什么也不会做。 当有指定的构造方法之后,系统就不会在添加无参构造方法了。
3.构造方法的重载:方法名相同,但参数不同的多个方法,调用时会根据不同的参数选择相应的方法。
五、static
1.静态成员 前面提到过,类变量与成员变量的区别就是类成员需要使用static修饰。事实上,static修饰的成员就称为静态成员或类成员。它被整个类,也就是类的所有对象共享。
静态成员可以使用对象名进行访问,也可以使用类名直接访问。
2.静态方法 被static修饰的方法是静态方法,静态方法不依赖于对象,不需要将类实例化便可以调用。由于这个特点,所以静态方法中不能有this,也不能访问非静态成员变量和非静态方法。当非静态成员变量和非静态方法可以访问静态方法。
六、final
final
关键字可以修饰类、方法、属性和变量
- final修饰类,则该类不允许被继承,为最终类。
- final修饰方法,则该方法不允许被覆盖(重写)。
- final修饰属性,则该类的属性不会进行隐式初始化(类的初始化属性必须有值),要么在final属性定义时直接赋值,要么在构造方法中赋值(但只能选其一)。
- final修饰变量,则该变量只能被赋一次值,即常量。
七、权限修饰符
权限修饰符可以用来限制类的属性和方法的访问范围。
- private。被private修饰的属性或方法只对本类可见。
- 默认。什么修饰符都不加,则这些属性和方法对本类和同包可见。
- protected。被protected修饰的属性或方法对本类、同包和其所有子类可见。
- public。被public修饰的属性或方法,对一切可见。
以上的权限修饰符用来修饰属性和方法,如果我们想要修饰类,则只能使用public和default修饰。
- default。被default修饰的类仅在包内可见。
- public。被public修饰的类对一切可见。
八、封装
封装是一种提升程序健壮性的技术,可以保护我们的对象属性不会被意外或恶意篡改。
1. 对属性使用private保护。
2. 使用getter/setter方法来访问属性。
九、this和super
1.this代表了当前对象。我们可以使用this.属性
访问当前对象属性,使用this.方法
来访问当前对象的方法。
当成员变量和局部变量之间同名发生冲突时,通过this访问成员变量。
2.super关键字在子类内部使用,代表父类对象。可以使用super.属性
访问父类属性,使用super.方法
来访问父类方法。
子类构造方法需要调用父类的构造方法时,通过super()访问(一般为第一条语句,也可以通过this()来调用自己的构造函数)。
十、继承
如果我们需要创建一个类,这个类是在其它类的基础上进行扩充或修改而来的,那么我们就说这个类继承了其它类。比如我们在动物类的基础上创建了猫类。我们把猫类称为动物类的子类或派生类,把动物类称为猫类的父类或基类。
继承的语法:
class 子类 extends 父类
如由Animal类创建Cat类
class Cat extends Animals {
...
}
需要注意的是:
- 子类拥有父类除private以外所有的属性和方法。
- 子类可以拥有自己的属性和方法。
- 子类可以重写父类的方法。
- Java中的继承是单继承,一个类只有一个父类(Java可以通过implements接口实现多继承)。