关于java的面向对象的相关知识-1
面向过程和面向对象的 区别和练习
—》面向过程:就是指行为的每个步骤,以步骤为单位完成某个具体的事情
—》面向对象:面向对象就是将面向过程通过调度组合不同的对象来完成某些事情,面向对象比面向过程更先进,更高级。
建立面向对象的思维方式
1.先整体,在局部
2.先抽像,再具体
先思考完成问题的框架,而不是行为
3.能做什么,在做什么
相关概念
类:是一个抽象的概念,雷士一组具有相同特性(属性)和行为(方法)的集合。
对象:对象就是类中一个具体的个体。
属性:相当于一个具体对象的特性
方法:相当于人的一个具体对象行为,比如:吃饭等
类和对象的定义格式
class 类名{
属性名称:
返回值类型 方法名称
}
对象的定义:
一个类想要真正的进行操作,必须依赖于类
语法:
类名称 对象名称=new 类名称();
访问类中的属性:
对象.属性;
调用类中的方法:
对象.方法()
实例
定义一个猫类,写上属性和方法
public class Cat {
//属性--成员变量
//昵称
public String cname;
//重量
public double weight;
//腿
public int tui;
//颜色
public String color;
/*
* 访问修饰符 (权限)class 类名()
* public公开的,无论在哪里都能访问到
* class是java中自定义数据类型的关键字
* 通过class定义的都是引用数据类型
* 类名:
*
*/
//方法
/*
* 显示的方法:
* 注意:方法的注释都使用这个注释,这个注释有提示的效果
* String.format("最终显示的结果", 参数);
*
*/
public void show() {
//%-5.2负号表示左对齐
System.out.println(String.format("昵称:%s,重量:%-5.2f,腿的个数:%d,猫的颜色:%s", cname,weight,tui,color));
}
}
执行调用时:
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建对象
//类名 对象名 =new 类名();
//对象名是自己定义的,符合要求即可
/*
* 变量:开辟一个空间存储值 一个空间一个值
* 数组:开了一连串的空间的多个值 一个空间多个值,数据类型也必须相同
* 将多个相同类型的变量包装成一个数组名
*
*/
Cat c=new Cat();//申明了一个变量并在内存中开辟了一个空间
//调用属性赋值
c.cname="小白";
c.color="白色";
c.tui=4;
c.weight=12;
//调用属性取值
c.cname();
//调用方法
c.show();
}
类和对象的内存分析
new 关键字表示创建一个对象
new关键字表示实例化一个对象
new关键字表示申请内存空间
栈内存是存储地址和基本数据类型,堆是存储对象的,
第一种情况中仅仅声明了一个变量名,便没有开辟新的内存空间。
有了new就可以申请一个内存空间,得到变量的地址,指向堆内存的一个空间。堆空间内就是所有属性,方法等相加的内存空间。
当其有值的时候,name就会的到一个地址,这个地址是“小白”的地址
栈内存存的实际上是一个地址,堆内存存在的才是真正的数据。
构造方法
-》构造方法:
1.构造方法就是类构造对象是调用的方法,用于对象的初始化工作。
2.构造方法是实例化一个类的对象是,也就是new的时候,最先调用的方法。
-》构造方法的的定义格式:
构造方法在类中定义,方法名与类名相同,无返回值类型的声明。
例如:
public class Student {
//id号码
public int id;
public int hight;
public Student() {}
//带参构造方法,用于实例化对象的时候,直接初始化
public Student(int id,String name,String sex,int age,int hight) {
//此写法可以在后续直接赋值调用
this.id=id;
this.name=name;
this.sex=sex;
this.age=age;
this.hight=hight;
}
}
说明:一个类中有多个构造方法,就叫做构造方法 的重载有其他构造方法时,保留默认的构造方法
默认的构造方法就是只有一个相同的类名,没有参数和其它东西。
构造方法的知识点小结:
this关键字
this关键字的用法:
1.可以调用属性
2.可以调用方法和构造方法
3.表示当前对象
在方法中调用方法: