面向对象的基础
一.类与对象 1.类的声明 类可理解为Java中的一种新的数据类型,他是Java程序设计的基本单位。这种数据类型中封装了数据的内容和对数据内容的操作。类的定义可以看作是建立对象的模板,当程序运行时,已声明的类用来创建新对象。由类创建对象对象的过程称为实例化(instantiation),每个对象都是类的一个新实例(instance)。 2.类与对象的关系 类→对象(具体化过程) 对象→类(抽象化过程) 对象包括 1.属性(对象的特征) 2.方法(对象的行为)
3.类的声明格式
[修饰符] class 类名 [extends 父类] [implements 接口名]
{
类成员变量声明 //描述对象的状态
类方法声明 //描述对象的行为
}
3.1类头 1.修饰符 (1)访问控制符:public、private和protected public(公共)——后续定义的任何类均可访问。 private(私有)——仅能被类自身的内部函数成员访问,其他任和类都不能直接访问。 protected(受保护的)——同private,但能被继承类受保护的成员访问,不能被私有成员访问。 (2)抽象类说明符:abstract。 abstract 不仅用于类的声明,也适用于方法。当用于类的声明时,该类不能创建对象。 (3)最终类说明符:final。 final不仅用于类的声明,也适用于变量和方法。当用于类的声明时,该类不能有子类;当用于变量声明时,该变量最初赋予的初值在以后的调用中只能被引用不能被修改;同样声明为final的方法,在以后只能被使用不能被重载。 2.class关键字: 类的修饰符后面的class标志一个类定义的开始(注意不将class写成Class),class后面应跟新定义的类的名字,类名由编程者自己定义,应符合Java对标识符的有关规定,能体现该类的主要功能或作用。 3.类名 类名指的是具体创建的类的名字,遵循Java的命名方式。(习惯上类名首字母大写) 3.2类的成员 1.属性 声明方式
[修饰符] 数据类型 变量名;
2.方法
[修饰符] 返回值类型 方法名(参数列表) {
//方法体
}
3.构造方法 4.类的实例对象及使用过程
public class Student { //创建了一个学生类
pubic static void main(String[] args) {
int age; //定义类的成员变量
String name;
String sex;
Student stu = new Student(); //创建了一个名为stu的学生对象
stu.age = 18;
stu.name = 张三;
stu.sex = 男;
}
二.构造方法 1.概念 (1)构造方法是类中的一种特殊的方法。 (2)构造方法名与类名相同,不返回任何值。 (3)构造方法可初始化成员变量。 例:类中加一个构造方法,可初始化类的成员变量
public class Student {
int age;
String name;
public Student(int a,String b) {
age = a;
name = b;
}
Student stu = new Student(18,"小明");
}
2.关键字this (1)this表示当前对象,可以调用类的属性、方法、构造方法 (2)什么时候使用this关键字呢? 当形参与成员变量重名时,如果在方法内部需要使用成员变量时,必须添加this来表示该变量的类成员。它在方法内部就是这个方法所属的对象的引用变量。 例:调用类的属性
public class Person {
public Person(int age,String name) {
this.name = name;
this.age =age;
}
int age;
String name;
public void setName(String name) {
this.name = name;
}
}
例:调用类的方法
public class A {
String name;
public A(String x) {
name = x;
}
public void func1() {
System.out.println("func1 of "+ name +" is calling");
}
public void func2() {
A a2 = new A("a2");
This.func1();
a2.func1();
}
}
public class TestA {
pubic static void main(String[] args) {
A a1 = new A ("a1");
a1.func2();
}
}
运行结果
func1 of a1 is calling
func1 of a2 is calling
面向对象设计的核心技术 面向对象程序设计的核心技术主要是封装、继承和多态性。
1.封装 类是封装的基本单元。通过封装可以隐藏类的实现细节,也可以避免对类中属性的直接操作。可以通过类的公共接口访问类中的变量,而不必知道这个接口的具体实现方式。只要这个方法的名字和参数不变,即使类中的变量被重新定义,或方法的代码被修改,对类中的变量的访问也不会受到影响。比如,你在计算机上安装了一个声卡,你不必知道声卡的内部结构,也不必知道功能如何实现的,因为实现声卡功能的继承电路被封装了。你只要知道声卡应该装在电脑主板的什么位置,其他的设备如音箱,光驱怎样和声卡连接就可以了。 2.继承 继承是对类的功能的重用和扩充。通过对某一个类的继承产生一个新的子类,子类既有从某个类中继承下来的功能,又可以自行定义自己的变量和方法,产生新的功能。 3.多态性 多态性指的是方法的名字相同,但实现不同。即“同一接口,多个方法”。如有三个方法,分别用来计算圆、矩形、三角形面积,他们的名字可以都叫做area。