1.什么是类
-
具有相同属性和方法的一组对象的集合
-
类是概念
-
从拥有同样的属性和方法的事物中抽象出来的概念
-
-
类是模板
-
通过类创造出来的对象具有类规定的属性和方法
-
2.什么是对象
-
对象是实体
-
拥有类指定的属性和方法的客观存在
-
-
类和对象的关系
-
类是对象的抽象,对象是类的具体(实例化)
-
类是模板,确定对象将会拥有的属性和方法
-
类是对象的类型
-
引用数据类型
-
和基本数据类型不同,需要使用new关键字创建对象
-
-
一个类可以有很多对象,通过模板我们可以创建出很多的实例。
-
3.什么是面向对象
-
面向对象是一种编程思想,java是一门面向对象的编程语言
-
面向过程是将解决问题的方法分成一步一步去执行
-
面向对象是把解决问题看作一个对象的能力
4.如何使用类和对象
-
创建类
-
从需求出发,抽象出类
-
public class Dog { //静态的特点——属性 String color;//毛色 String name;//名字 int age;//年龄 //动态的特点——方法 public void bark() { System.out.println("狗在汪汪叫!"); } }
-
java是面向对象的编程语言,所有的代码都写在类中
-
属性——事物的静态特征
-
属性声明在类中,方法外,作用域是整个类,所以又叫全局变量
-
-
方法——事物的动态特征
-
public void 方法名() { }
-
-
-
创建对象
-
//类名 对象名 = new 类名() Dog dog = new Dog();
-
可以把对象名看左一个变量名,把对象看成特殊的变量
-
Dog 是类型,dog是变量名/对象名
-
-
使用对象
-
因为类是一个概念,无法直接使用,需要通过类产生对象,然后使用对象的属性和方法
-
对象名.属性
-
对象名.方法()
-
dog.name = "大黄"; dog.age = 3; dog.color = "黄色"; System.out.println("我的小狗叫" + dog.name); dog.bark();//调用对象的方法
-
5.对象在内存中存储的方式
-
类是一种数据类型,除了可以存储数据之外,还有一定的功能,调用方法解决问题。
-
数组是存储一批相同数据类型的数据
-
对象可以存储一批不同数据类型,但在意义上有关联的数据
-
栈中存储对象的地址,堆中存储真正的对象,对象里面的每一个属性都是一个小格子,可以存储值。
-
比较对象是否相等,不能使用==,给对象名赋值也不能使用=
-
如果对象值为空(null)时,不能调用其属性和方法,不然会报”空指针"异常NullPointerException
-
因此,比较字符串相等时,要把常量放在前面,因为变量值可能是null,如果是null调用equals方法会报空指针异常
"123".equals(str);
-
-
//String类型的数组,可以存储一批字符串 //int类型的数组,可以存储一批整数 //想要存储一批信息,就使用User类型的数组——User类型的数组可以存储一批User User[] users = new User[99]; System.out.println(users[0]);//null users[0] = new User();//实例化数组元素 users[0].username = "sa";//users[0] 一定是实例化后才能使用,不然会报空指针异常 System.out.println(users[0].username);
-
和数组类似的:对象的属性未赋值也可以使用,会根据不同类型,生成不同的默认值
-
整型 0;
-
浮点型0.0;
-
布尔 false
-
字符 "\u0000"
-
字符串等引用数据类型 null
-
-
也可以手动给对象添加默认值
-
public class User { String username = "sa"; //账号 String password = "111"; //密码 int cardnum = 123; //会员卡号 }
-
6.成员变量和局部变量
-
成员变量声明在类中,方法外,作用域是整个类;局部变量声明在方法中,作用域是它声明位置的大括号中
-
成员变量未赋值可以使用它,局部变量未赋值不能使用
-
成员变量和局部变量可以重名,局部变量优先级较高
-
成员变量在new对象时就被创建并赋值,是先于方法的执行
7.补充
-
封装:
-
对象同时具有属性和方法两项特性
-
对象的属性和方法通常被封装在一起,共同体现事物的特性,二者相辅相承,不能分割
-
-
面向对象的优点:
-
与人类的思维习惯一致
-
把人类解决问题的思维过程转变为程序能够理解的过程
-
-
信息隐藏,提高了程序的可维护性和安全性
-
封装实现了模块化和信息隐藏
-
封装使得在对象外部不能随意访问对象的属性和方法
-
-
提高了程序的可重用性
-
一个类可以创建多个对象实例,增加了重用性
-