面向对象(十二)
面向对象(十二)
什么是面向对象
面向对象编程(Object-Oriented Programming, OOP)
面向对象编程的本质就是:以类的方式组织代码,以对象的方式组织(封装)数据。
三大特性
- 封装
- 继承
- 多态
类是一个模版,对象是一个具体的实例
创建和初始化对象
使用new关键字创建对象
使用new关键字创建对象的时候,除了分配内存空间外,还会给创建好的对象,进行默认的初始化,以及类中构造器的调用
package com.oop.demo01;
public class Student {
//属性
String name;
int age;
//方法
public void study() {
System.out.println(this.name+"在学习");
}
}
//类是抽象的,需要实例化
//类实例化后会返回一个具体的对象
// Student xm = new Student();
// System.out.println(xm.name); //默认初始化 null
// System.out.println(xm.age); //默认初始化 0
// xm.name = "小明";
// xm.age = 15;
// xm.study();
//
// Student xh = new Student();
// System.out.println(xh.name);
// System.out.println(xh.age); //新的实例 0
构造器
构造器的规则
- 构造器的名字必须和类的名字相同
- 必须没有返回类型,也不能写void
构造器的作用
- 在使用new创建一个实例化对象时,本质上是在调用构造方法
- 初始化对象的值
注意点
无参构造可以不自行创建,如果构造函数有参数,则需要自行创建,即显示创建
package com.oop.demo01;
public class Person {
//属性
String name;
//无参构造:可以不自行定义,在创建类时会自动创建
//可以在class文件中查看
public Person() {
}
//有参构造:如果构造函数有了参数,就需要自行定义(显示定义)
public Person(String name) {
this.name = name;
}
}
/*
public class Application {
public static void main(String[] args) {
//实例化一个对象,无参
Person person = new Person();
System.out.println(person.name);
//实例化一个对象,有参数
Person xm = new Person("小明");
System.out.println(xm.name);
}
}
*/
对象和实例化的内存示意图
现有Pet类,在Application中实例化一个dog对象和cat对象
package com.oop.demo02;
public class Pet {
public String name;
public int age;
public void shout() {
System.out.println("叫了一声");
}
}
/*
Application:
public class Application {
public static void main(String[] args) {
//实例化一个Pet对象dog
Pet dog = new Pet();
dog.name = "旺财";
dog.age = 3;
dog.shout();
//实例化一个Pet对象cat
Pet cat = new Pet();
}
}
*/
面向对象简单总结
类与对象
- 类是一个模版,是抽象的;对象是一个具体的实例
方法
- 方法的定义和调用
对象的引用
- 引用类型:8大基本类型
- 对象是通过引用来操作的,栈--->堆
属性
- 字段Field 成员变量
- 各类型初始化的值:
- 数字:0, 0.0
- String: null
- Char: u0000
- Boolean: false
- 引用:null
- 修饰符 属性类型 属姓名 = 属性值
对象的创建和使用
- 必须使用new关键字创造对象,构造器
- 对象的属性
- 对象的方法
类
- 静态的属性
- 动态的方法