li

XXXXX

 

java面向对象编程

1、面向对象的程序设计

1.1 抽象的数据类型

  • 将不同类型的数据的集合组成的整体用来描述一种新的事物。

    • 人:包含了(String name,int age,char sex,double salary)4种不同类型的数据组成的整体;

    • 学生:包含了(String name, double score,String grade) 也是不同类型的数据组成的整体

  • 思考:人把大象装进冰箱分几步?

    • 人:数据类型有(String name ,int age ....) 功能(人装大象 打开冰箱门 关上冰箱门)行为

    • 大象:数据类型( double weight ,String name) 行为(被人拿起,装进冰箱)

    • 冰箱 数据类型( String singe) 行为(关门,开门)

  • 上面所出现的人、学生、大象、冰箱都是一种抽象数据类型----类!!!

  • 类是java语言最基本单位。

1.2 什么是类(类的首字母要大写)

  • 类的成员:

    • 属性(成员变量)

    • 行为(方法,函数)

public class Person{//该类只定义了4个成员变量 
   //成员变量
   String name;
   int age;
   char sex;
   double salary;
}

1.3 类的转化过程

  • 打印学生的第一个方法

/** 打印学生信息的方法 * 姓名、年龄、性别、学号 */ 
public static void studentInfo(String name,int age,char sex,double number){
   System.out.println("---------------");    System.out.println("姓名: " + name);
   System.out.println("年龄:" + age);
   System.out.println("性别: " + sex);
   System.out.println("学号:" + number);
}
!!!参数中多种不同类型的数据,我们考虑采用抽象数据类型--类来替换参数类型
  • 打印学生信息的第二种方式

/** 打印学生信息的方法 * 姓名、年龄、性别、学号 */ 
public static void studentInfolijian(Student studnet){
   System.out.println("---------------");    System.out.println("姓名: " + name);
   System.out.println("年龄:" + age);
   System.out.println("性别: " + sex);
   System.out.println("学号:" + number);
}
public class Student{
   String name;
   int age;
   char sex;
   doubel number;
}
!!!打印学生信息方法只能针对Studnet数据操作,是属于Student自身方法,因此没有实现数据与操作数据的行为统一
  • 打印学生信息的第三种方法

public class Student{
   String name;
   int age;
   char sex;
   doubel number;
}
public void studentInfolijian(){
   System.out.println("---------------");    System.out.println("姓名: " + name);
   System.out.println("年龄:" + age);
   System.out.println("性别: " + sex);
   System.out.println("学号:" + number);
}
public static void main(String[] args){
   Student stu=new Studnet();
   stu.studneInfo();
}
!!!Student打印学生的信息方法只针对与Student操作,是Student内部的方法;
  • 总结:

    • 类是一种抽象的数据类型;

    • OOP(Object Oriented Programming)面向对象编程实际是分类型思想。将过程中出现的数据泛化为类。

    • 类的组成:属性和方法

    • main方法也属于类的方法;

2、定义一个类

2.1 定义类的成员变量

  • 用于描述该类型对象共同的数据结构

public class Person{
   //成员变量   数据类型   变量名称
   String name;
   int age;
  .....
}
  • 成员变量如果不赋初始值时,则系统会提供默认的初始值

image-20220215092655324

2.2 定义类的成员方法

  • 用于描述对象的行为,封装对象的功能。

public class Person{
   //成员方法   !!!main方法也是类的组成元素之一
   Public void show(){
       System.out.println("show.....");
  }
}

3、创建并使用对象

3.1 使用new关键字创建对象

  • 通过new 类名();表示创建了该类的对象,也叫做类的实例化(instantiation)。

new Person();//实例化人类对象

image-20220215094039414

3.2 引用类型变量

  • 为了能够对实例化的对象进行访问控制,需要使用一个特殊的变量---引用

Person p=new Person();
//p:指向对象的引用
  • 引用存储的是对象的地址信息,"指向对象的引用"。

  • 可以通过引用采用打点的形式访问对象的成员。

  • 在java中,除了8中基本类型外,其他类型都为引用数据类型---且默认值为null

Person p=new Person();//实例化人类对象
p.name="张三";//引用访问属性
p.show();//引用访问方法
Person p1 = p;
Person p2 = new Person();
p2.name = "zhang3";
p2.age = 16;
p2.show();
System.out.println(p == p1);//t p和p1由同样的地址值
System.out.println(p == p2);//f p和p2两个new关键字。只要new就会创建对象,地址就不 一样

3.3 引用类型变量的赋值

  • 相同类型之间引用相互赋值

  • 引用类型之间的赋值不会创建新的对象,但有可能会使两个引用指向同一对象

image-20220215184429601

3.4 null和nullPointerException

  • 对于引用类型变量可以赋值为null,null的含义为"空",表示没有指向任何对象

  • 当引用的值为null时,再去调用其成员会抛出nullPointerException(空指针异常)

Person p4 = null; 
p4.name = "wangmazi";

image-20220215184747744

  • 总结:

    • 不同类型组成的抽象的数据类型-------类 java中基本组成单位

    • 类的成员:属性(成员变量)和方法(成员方法);

    • 如何使用类:通过new关键字;

    • 引用:存储了对象地址值的变量,指向对象的引用

    • 引用数据类型:除了8种基本类型外都叫引用类型 类!

    • 空指针异常:当对象为空时,使用它会报空指针

4.初始化对象的三种方式

  • 直接通过赋值运算符初始化;

  • 代码块初始化;

  • 构造方法初始化。

5、实例化对象的过程:

将类加载到内存,给静态数据成员分配空间,调用静态代码块;给成员变量分配空间;调用代码块;调用构造方法。

posted on 2022-03-16 20:49  LXXXXxZz  阅读(26)  评论(0编辑  收藏  举报

导航