JAVA面向对象
一,面向对象与面向过程
面向对象与面向过程区别:
都是一种思想,思考问题的角度,思维方式
面向过程: 关注"我应该如何实现?“按照步骤一步一步实现就可以了
面向对象: 关注"我应该找谁完成?” 这个谁就是对象,对象如何完成不关注
面向对象依赖于面向过程
面向对象思想的好处:
1.更符合现实生活中人们的思维
2.面向对象更贴合管理者的思维角度,更贴合执行者的思维角度
3.面向对象可以将复杂的问题简单化
二,如何使用面向对象进行编程
如何使用面向对象进项编程:
就是要让程序与现实生活紧密联系
提出两个概念
类 : 定义一些列事物的共性->图纸|模板|模具
对象 : 表示显示生活中的具体事物 --> 实例
根据类构建对象,因为现有图纸才能造车
自定义类:
自定义的类也是引用数据类型
分析步骤:
1.手机能做什么? 功能能力–>动词 --> 打电话,聊天,打游戏,上网… -->成员方法 : 目前不用static修饰的方法
2.手机有什么特征|特点? 属性–>名词 --> 尺寸 价格 颜色 品牌 … -->成员变量
模板:
public class 类名{
//成员变量-->特征
修饰符 数据类型 变量名 = 赋值;
//成员方法-->功能
修饰符 返回值类型|void 方法名(参数列表){
方法体;
}
}
自定义手机类
public class Phone {
//成员变量->属性
//尺寸 价格 颜色 品牌
public double size;
public int price;
public String color;
public String brand;
//成员方法->功能
// 打电话
public void call(){
System.out.println("从前有一个人长得像电话,出门就被打了...");
}
}
使用手机类
public class Class002_PhoneTest {
public static void main(String[] args) {
//1)创建对象
Class001_Phone p = new Class001_Phone();
//根据引用p就可以操作新创建的收集对象
//2)根据对象使用
p.color = "白色";
p.brand = "华为";
p.size = 6.6;
p.price =6999;
System.out.println(p.color);
System.out.println(p.brand);
System.out.println(p.size);
System.out.println(p.price);
p.call();
}
}
对象内存分析图
三,new关键字的作用
new关键字做的事情:
1.在堆中为对象开辟一块内存空间,并且同时成员变量跟随对象进入到堆内存并附默认值
2.调用构造器为对象初始化信息
3.将对象的地址返回给引用
四,构造器
构造器|构造方法|构造函数:特殊的方法
作用:只能为对象初始化信息(为成员变量第一次赋值),不是用来创建对象
使用:只能跟随new关键字一起使用
定义:
修饰符 类名(参数列表){
...
}
不需要返回值与void
可以根据需求定义return,提前结束构造器的作用
注意:
如果一个类中没有显示定义构造器,编译器会默认为类提供一个空构造(没有参数的构造器)
如果一个类中有显示定义构造器,编译器不会为我们提供任何构造器
构造器也是特殊的方法,可以构成方法的重载
总结:
如果创建对象的同时就能够确定成员的初始值,调用带参构造为对象初始化信息
如果创建对象的时候不能确定成员变量的值,调用空构造为对象初始化信息,确定属性值的时候再赋值
public class Constructor {
public static void main(String[] args) {
//创建对象
Dog d= new Dog();
//为成员赋值
d.name = "斑点";
d.type = "二哈";
d.lookDoor();
//创建对象的同时为对象的成员赋值
Dog dog = new Dog("小花");
dog.lookDoor();
Dog dog2 = new Dog("二狗子","中华田园犬");
dog2.lookDoor();
}
}
class Dog{
//成员属性
public String name;
public String type;
//空构造
public Dog(){
System.out.println("空构造...");
}
//带参构造
public Dog(String dogName){
System.out.println("1个参数构造...");
name = dogName;
}
public Dog(String dogName,String dogType){
System.out.println("2个参数构造...");
name = dogName;
type = dogType;
}
//行为
public void lookDoor(){
System.out.println(type+"品种的"+name+"正在看家...");
}
}