面向对象(上)
- java面向对象学习三条主线
- * 1.java类及类的成员:属性、方法、构造器、代码块、内部类
- * 2.面向对象的三大特征:封装,继承,多态
- * 3.其他关键字:this,super,static,final,abstract,interface,package,import等
-
复制代码 面向对象的三大特征
面向对象的思想概述
- 类和对象是面向对象的核心概念
类是对一类事物的描述,是抽象的,概念上的定义
对象是实际存在的该类事物的每个个体,因此称为实例(instance)
在java中万事万物皆对象
属性和方法
属性: 对应类中的成员变量
方法:对应类中的成员方法
- package com.zx.oop;
- /*
- * 类和对象的使用
- * 1.创建类,设计类成员
- * 2.创建类的对象
- * 3.通过对象.属性或对象.方法调用
- */
- public class PersonTest {
- public static void main(String[] args) {
- //创建Person类的对象
- Person pe=new Person();
-
- //调用对象的属性和方法
-
- //对象.属性
- pe.name="Jack";
- pe.isMale=true;
- System.out.println(pe.name);
-
- //对象.方法
- pe.eat();
- pe.sleep();
- pe.spke("中国话");
- }
-
- }
- class Person{
-
- //属性
- String name;
- int age = 1;
- boolean isMale;
-
- //方法
- public void eat() {
- System.out.println("人可以吃饭");
- }
-
- public void sleep() {
- System.out.println("人可以睡觉");
- }
-
- public void spke(String language) {
- System.out.println("人可以说话,讲的话是"+language);
- }
-
- }
复制代码- 运行结果:
- Jack
- 人可以吃饭
- 人可以睡觉
- 人可以说话,讲的话是中国话
复制代码 类的多个对象之间的关系
- 在上面代码基础的pe.spke("中国话");的后面加上下面代码
-
- //重新new一个对象
- Person pe2=new Person();
- System.out.println(pe2.name);//默认值为null
- System.out.println(pe2.isMale);//默认值为false
-
- //pe的对象地址赋值给pe3,所以指向的是堆里面的同一个实体
- Person pe3=pe;
- System.out.println(pe3.name);
- pe3.age=99;
- System.out.println(pe.age);//所以pe.age也是99
复制代码 类中的属性(成员变量)和局部变量
属性(成员变量)和局部变量
<ol>相同点:
- 定义变量的格式是一样的
- 先声明,后使用
- 变量都有其作用域
不同点:
- 成员变量: 在类体内定义的变量称为成员变量,它的作用域是整个类,也就是说在这个类中都可以访问到定义的这个成员变量
- 局部变量:声明在方法内,方法形参,代码块内,构造器形参,构造器内部的变量
- 成员变量:在声明属性时,指明其权限,使用权限修饰符
- 局部变量:不可以使用权限修饰符
复制代码 类的属性根据其类型都有自己的默认初始化值- 成员变量:
- 整型(byte,short,int,long) 0
- 浮点型(float,double) 0.0
- 字符型(char) 0或'\u0000'
- 布尔型(boolean) false
- 引用数据类型:null
- 局部变量:
- 必须在声明的时候初始化值,不然会编译报错,形式参数需要调用的时候才赋值,所以形参没有编译错误
复制代码 内存中加载的位置- 成员变量:加载到堆空间中(非static)
- 局部变量:加载到栈空间中
复制代码- public class Demo10 {
- //成员变量
- static int num=100;
- public static void main(String[] args) {
- System.out.println(num);
- add();
- }
- //成员方法
- public static void add(){
- System.out.println("今天赚了"+num);
- }
- }
复制代码 [code]public class Demo10 { public static void main(String[] args) { int i,j;//main方法里面定义的局部变量 for (i=1;i |