面向对象的思想类与对象构造方法this关键字代码块static关键字
面向对象的思想面向过程:
分析出解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候依次调用就可以了。
面向对象:
把构成问题的事务按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。
主要特点:封装性、继承性、多态性。
- 封装性
核心思想,两层含义:
一、把对象的属性和行为看成一个密不可分的整体;
二、“隐藏信息”,将不想让外界知道的信息隐藏起来。继承性
类与类之间的关系。
继承不仅增强了代码的复用性、提高了开发效率,还降低了程序产生错误的可能性,为程序的维护以及扩展提供了便利。多态性
同一个属性和方法在不同的类中具有不同的语义。
多态的特性使程序更抽象、便捷,有助于开发人员设计程序时分组协同开发。
类和对象是Java中最基本、最重要的单元。
类表示某类群体的一些基本特征抽象;
对象表示一个个具体的事物。
- 类的定义
类是对象的抽象,用于描述一组对象的共同特征和行为。
所有的Java程序都是基于类的。
类中可以定义成员变量和成员方法。
成员变量也称为是对象的属性;
成员方法用于描述对象的行为,简称方法。
例如:
class Student{//定义一个类,Student是类名
String name;//定义String类型的变量name(姓名)
int age;//定义int类型的变量age(年龄)
String Sex;//定义String类型的变量Sex(性别)
void read() {//定义read()方法,直接访问对象属性
System.out.println("大家好,我是"+name+",我在看书!");
}
}
在Java中,定义在类中的变量被称为成员变量,定义在方法中的变量被称为局部变量。
- 对象的创建与使用
this关键字
Java中的this关键字语法比较灵活,其主要作用主要有以下3种。 (1)使用this关键字调用本类中的属性。 (2)this关键字调用成员方法。 (3)使用this关键字调用本类的构造方法。 在类的构造方法中,如果参数名称与类属性名称相同,则会导致成员变量和局部变量的名称冲突。
class Student {
private String name;
private int age;
// 定义构造方法
public Student(String name,int age) {
this.name = name;
this.age = age;
}
public String read(){
return "我是:"+name+",年龄:"+age;
}
}
public class Example10 {
public static void main(String[] args) {
Student stu = new Student("张三", 18);
System.out.println(stu.read());
}
}
通过this关键字调用成员方法的具体代码示例:
class Student {
public void openMouth() {
...
}
public void read() {
this.openMouth();
}
}
构造方法是在实例化对象时被Java虚拟机自动调用,在程序中不能像调用其他成员方法一样调用构造方法,但可以在一个构造方法中使用“this(参数1,参数2…)”的形式调用其他的构造方法。 在使用this调用类的构造方法时,应注意以下几点: (1)只能在构造方法中使用this调用其他的构造方法,不能在成员方法中通过this调用其他构造方法。 (2)在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次。 (3)不能在一个类的两个构造方法中使用this互相调用。代码块
代码块,简单来讲,就是用“{}”括号括起来的一段代码,根据位置及声明关键字的不同,代码块可以分为4种:普通代码块、构造块、静态代码块、同步代码块。
普通代码块就是直接在方法或是语句中定义的代码块。
构造代码块是直接在类中定义的代码块。
static关键字
如果希望某些属性被所有对象共享,就必须将其声明为static属性。 如果属性使用了static关键字进行修饰,则该属性可以直接使用类名称进行调用。 除了修饰属性,static关键字还可以修饰成员方法。 如果在Java程序中使用static修饰属性,则该属性称为静态属性(也称全局属性),静态属性可以使用类名直接访问,访问方式如下: 类名.属性名 通过类名就可以直接调用某个方法,只需要在成员方法前加上static关键字,使用static关键字修饰的方法通常称为静态方法。 同静态变量一样,静态方法也可以通过类名和对象访问,具体如下所示。 类名.方法 或 实例对象名.方法 静态方法只能访问静态成员,因为非静态成员需要先创建对象才能访问,即随着对象的创建,非静态成员才会分配内存。而静态方法在被调用时可以不创建任何对象。 在Java类中,用static关键字修饰的代码块称为静态代码块。 通常使用静态代码块对类的成员变量进行初始化。
class Student {
String name; // 定义name属性
int age; // 定义age属性
static String school = "A大学"; // 定义school属性
public Student(String name,int age){
this.name = name;
this.age = age;
}
public void info(){
System.out.println("姓名:" +this. name+",年龄:" +this.age+",学校:" + school);
}
}
public class Example14 {
public static void main(String[] args) {
Student stu1 = new Student("张三",18); // 创建学生对象
Student stu2 = new Student("李四",19);
Student stu3 = new Student("王五",20);
stu1.school = "B大学";
stu1.info();
stu2.info();
stu3.info();
}
}
school属性修改前的内存
school属性修改后的内存



