1.面向对象
1.1面向对象和面向过程思想的区别
面向过程强调的是每一步的步骤,强调的是过程
面向对象强调的是对象
面向过程:
买水 不能讲课 出门 去超市 选水 付钱 回来 喝水
买电脑 查看配置 跑去数码广场 买了一台垃圾电脑 带回来 … 装环境
面向对象:
找个对象 班长 班长,我给你两块钱,你帮我买瓶水
好好学习,不然找不到对象
面向对象的思想更符合人类的习惯,为什么?
懒
因为面向对象的思想把我们从执行者变成了指挥者
1.2那什么是对象
万物皆是对象
1.3什么是类
同一种类别的对象他们是一个类
物以类聚,当我们很多对象是同一个品种的时候,其实我们就在一个类里面
比如,各种各样的狗,狗类 各种各样的猫 猫类
1.4类和对象的关系
对象细化到每一个个体,我们每一个人是一个对象,那么我们和人类的关系被包含的关系,类包含了这个类下面所有的对象。
一个类包含了这个类下面所有的对象
类还有大类别,小类别。我们属于小类别,那么肯定就有属于这个小类别上的大类别。比如我们往上就是猿类,我们不能说我们是猴子类吧,23333.但是我们可以说人类和猴子都属于哺乳类,在往上去说就是动物。
1.5属性和行为
类是具有相同属性和行为的一组对象的集合
属性:就是钙食物的状态信息
我们人类 两只脚 一个头 一张嘴 两只手
行为:就是该事物能做什么
人会语言交流学习,会娱乐,吃饭
人类:年龄 姓名 身高 吃饭 学习 打游戏
上面是有共同点
细化到每个对象还有不同点,类只是会把大部分的相同点组合在一起,但是每个对象还是有不同点
把一个类看成一个模板
对象 模板创建出来的产品
2.类
2.1创建类
关键字:class
class 类名
类名规范 首字母大写,后面驼峰命名
类名和java文件名必须要一致
语法:
public class 类名{
//属性
//行为
}
一个java中间可以写多个类,但是一个java文件只能写一个public修饰的类,建议一个java文件只写一个类
//类名
punlic class Person{
//属性
//行为
}
2.2定义属性
String类型
//字符
char a='a';
System.out.printlin(a);
//字符串
String b="班长好";
System.out.println(b);
语法:
修饰符 数据类型 属性名:
//类名
public class Person{
//属性
//修饰符 数据类型 属性的名字;
//属性的名字 首字母大写,后面驼峰
//年龄属性
public int age;
//身高
public double height;
//姓名
public String name;
//地址
public String address;
//体重
public double height;
//行为
}
2.3定义行为
行为在java中被称为方法
语法:修饰符 返回值类型 方法的名字(参数){
}
//类名
public class Person{
//属性
//修饰符 数据类型 属性的名字;
//属性的名字 首字母大写,后面驼峰
//年龄属性
public int age;
//身高
public double height;
//姓名
public String name;
//地址
public String address;
//体重
public double height;
//行为
//修饰符 返回值类型 方法的名字(参数){代码}
public void say(){
//代码
int i=99;
System.out.println("hello world!"+99);
}
//吃饭
public void eat(){
System.out.println("吃饭...");
}
//编程
public void program(){
System.out.println("coding...");
}
}
3.对象
3.1如何创建对象
类一旦声明完成,如果没有具体的对象存在,这个类就没有意义
需要得到一个类具体的对象(实例);
语法:类名 变量名=new 类名();
//这个代码写在哪里?
我们要运行java代码,入口类,这个入口类必须有一个main方法
//我们要运行java代码,入口类,这个入口类必须有一个main方法
public class PersonDemo{
public static void main(String[] args){
//类名 变量名=new 类名();
Person Person1=new Person();
//定义一个Person类型的变量
Person person2;
//初始化
Person2=new Person();
}
}
//类名
class Person{
//属性
public int age;
public double height;
public String name;
public String address;
public double weight;
//行为
public void say(){
int i=99;
System.out.println("hello world"+99);
}
public void eat(){
System.out.println("吃饭...");
}
public void program(){
System.out.println("coding...");
}
}
public class PersonDemo{
public static void main(String[] args){
Person person1=new Person();
Person person2;
person2=new Person();
}
}
3.2如何使用对象
使用对象:就是得到属性/设置对象的属性,以及调用对象的方法
3.2.1如何获取对象属性的值
通过:对象名.属性 进行调用
变量类型 变量名=对象名.属性;
System.out.println(对象名.属性);
public class PersonDemo{
public static void main(String[] args){
//类名 变量名=new 类名();
Person person1=new Person();
//如何获取属性
//变量的类型 变量名=对象名.属性名;
int age=person1.age;
//我们在编写类的时候如果没有给初值
//系统会自动给出默认值 byte short int long默认值是0
//float double是0.0 boolean false char '' String bull
System.out.println(age);//0
//获取person1对象的地址
System.out.println(person1.address);//null
//获取person1对象的身高
System.out.println(person1.height);//0.0
//定义一个Person类型的变量
Person person2;
//初始化
Person2=new Person();
}
}
3.2.2定义类的时候给出初始值
//类名
class Person{
//属性
public int age=18;
public double height=80.0;
public String name="班长";
public String address;
public double weight;
//行为
public void say(){
int i=99;
System.out.println("hello world"+99);
}
public void eat(){
System.out.println("吃饭...");
}
public void program(){
System.out.println("coding...");
}
}
public class PersonDemo{
public static void main(String[] args){
//类名 变量名=new 类名();
Person person1=new Person();
//如何获取属性
//变量的类型 变量名=对象名.属性名;
int age=person1.age;
//我们在编写类的时候如果没有给初值
//系统会自动给出默认值 byte short int long默认值是0
//float double是0.0 boolean false char '' String bull
System.out.println(age);//18
//获取person1对象的地址
System.out.println(person1.name);//班长
//获取person1对象的身高
System.out.println(person1.height);//80.0
//定义一个Person类型的变量
Person person2;
//初始化
Person2=new Person();
}
}
3.2.3给属性赋值
语法:
对象名.属性=具体值;
class Person{
//属性
public int age=18;
public double height=80.0;
public String name="班长";
public String address;
public double weight;
//行为
public void say(){
int i=99;
System.out.println("hello world"+99);
}
public void eat(){
System.out.println("吃饭...");
}
public void program(){
System.out.println("coding...");
}
}
public class PersonDemo{
public static void main(String[] args){
//创建一个对象
Person person=new Person();
//获取这个对象的name属性
System.out.println(person.name);//班长
//如何给对象的属性进行赋值?
//对象名.属性=具体值;
person.name="副班长";
//新的值来了,旧的值就被覆盖了
System.out.println(person.age);//18
person.age=81;
System.out.println(person.age);//81
Person person2=new Person();
System.out.println(person2.age);//18
}
}
3.2.4如何使用方法
语法:对象名.方法名();
class Person{
//属性
public int age=18;
public double height=80.0;
public String name="班长";
public String address;
public double weight;
//行为
public void say(){
int i=99;
System.out.println("hello world"+99);
}
public void eat(){
System.out.println("吃饭...");
}
public void program(){
System.out.println("coding...");
}
}
public class PersonDemo{
public static void main(String[] args){
//创建一个对象
Person person=new Person();
//获取这个对象的name属性
System.out.println(person.name);//班长
//如何获取对象的属性进行赋值?
//对象名.属性=具体值;
person.name="副班长";
//新的值来了,旧的值就被覆盖了
System.out.println(person.name);//副班长
System.out.println(person.age);//18
person.age=81;
System.out.println(person.age);//81
//副班长需要吃饭
//语法:对象名.方法名()
//调用一次执行一次
person.say();
person.eat();
person.program();
Person person2=new Person();
System.out.println(person2.age);//18
}
}
3.3对象的内存图
3.3.1一个对象的内存图
class Phone{
//品牌
public String brand;
//价格
public double price;
//颜色
public String color;
public void call(String name){
//String name 形式参数
System.out.println("打电话");
}
public void playGame(){
System.out.println("打王者荣耀");
}
public void sendSms(){
System.out.println("发送短信");
}
}
public class PhoneDemo{
public static void main(String[] args){
//创建华为手机 银色 6666
Phone phone=new Phone();
System.out.println(phone.brand+" "+phone.color+" "+phone.price);
//赋值的时候 对象名.属性 写在左边
phone.brand="华为";
phone.price=6666;
phone.color="银色";
System.out.println(phone.brand+" "+phone.color+" "+phone.price);
phone.call("班长");
phone.playGame();
phone.sendSms();
}
}
3.3.2两个对象的内存图
3.3.3三个对象的内存图
class Phone{
//品牌
public String brand;
//价格
public double price;
//颜色
public String color;
public void call(String name){
//String name 形式参数
System.out.println("打电话");
}
public void playGame(){
System.out.println("打王者荣耀");
}
public void sendSms(){
System.out.println("发送短信");
}
}
public class PhoneDemo{
public static void main(String[] args){
//创建华为手机 银色 6666
Phone p1=new Phone();
phone.brand="华为";
phone.price=6666;
phone.color="银色";
System.out.println(p1.brand+" "+p1.color+" "+p1.price);
p1.call("班长");
//创建锤子手机 黄色 8848
Phone p2=new Phone();
p2.brand="锤子";
p2.price=8848;
p2.color="黄色";
System.out.println(p2.brand+" "+p2.color+" "+p2.price);
p2.call("副班长");
//赋值的时候 对象名.属性 写在左边
phone.brand="华为";
phone.price=6666;
phone.color="银色";
System.out.println(phone.brand+" "+phone.color+" "+phone.price);
Phone p3=p2;
//锤子 8848.9 黄色
System.out.println(p3.brand+" "+p3.price+" "+p3.color);
p3.brand="小米";
p3.price=1999;
p3.color="红色";
//小米 1999 红色
System.out.println(p2.brand+" "+p2.price+" "+p2.color);
}
}