*面向对象:**
一.面向过程和面向对象之间的区别:
都是一种思想,思维方式
面向过程: "我应该如何完成?"然后一步一步实现就可以了
面向对象: "我应该招谁来完成?" 关注的就是对象,而不关注实现过程
面向对象依托于面向过程
二.面向对象的优点:
1.可以将复杂的问题简单化
2.面向对象更贴合与管理者,面向过程更贴合与执行者
3.面向对象思维方式更符合现实生活人们的思维方式
三.提供了2个角色: 类 对象,实现程序开发
类: 类表示一些列对象的共性|特点|特征-->模板|图纸
对象: 表示现实生活中的具体事物
根据类创建对象
通过类和对象将程序与生活建立联系
四.如何自定义类:
修饰符 类名{
//成员变量
修饰符 数据类型 变量名 = 赋值;
//成员方法: 不被static关键字修饰的方法叫做成员方法
修饰符 返回值类型|void 方法名(参数列表){
功能体;
}
}
1.手机能做什么? 能力|功能|作用: 打电话,上网,打游戏,拍照... 动词-->成员方法
2.手机的特征|特性? 颜色,品牌,价钱,尺寸... 名词-->成员变量
成员是属于对象
在这里插入代码片
public class Phone01 {
//属性:成员变量
public String color;
//品牌
public String brand;
//价钱
public double price;
测试类:*
1.导包:
同包下的类不需要导包
在java.lang包下的直接子内容不需要导包
2.创建这个类型的引用|变量:-->创建对象
引用数据类型 引用 = new 引用数据类型();
new关键字就是创建对象
3.根据对象名字|引用名使用某个对象的功能
引用.功能名字();
引用.属性名字
*/在这里插入代码片
public class PhoneTest02 {
public static void main(String[] args){
//1.创建对象
Phone01 phone=new Phone01(); //创建了一个手机对象,表示生活中的某个具体的手机事物
//2.使用属性
phone.color= “黑色”;
phone.brand= “苹果7plus”;
phone.price= 8000;
System.out.println(phone.color);
//3.使用功能:
phone.call();
}
}
构造器
- new 关键字创建对象
- 1.在堆中为对象开辟空间,成员属性跟随对象进入到堆内存中,并赋默认值
- 2.调用这个类的构造器为对象初始化信息 (第一次赋值就叫做初始化,就成员属性)
- 3.将地址返回给引用
- 构造器: 构造方法: 构造函数
-
就是一个特殊的方法
-
1.作用: 就是为对象初始化信息,不是用来创建对象的
-
2.使用: 跟随new使用
-
3.定义
-
修饰符 类名(参数列表){
-
构造器....
-
}
-
没有返回值类型,没有void,可以添加return
-
方法名必须与类名一致
-
不能和static,final,abstract一起使用
-
注意:
-
如果没有自定义的为类定义任何构造器,编译器会为你的类默认提供一个空构造(没有参数的构造器)
-
如果有显示定义任何构造器,编译器就不会再为你提供任意构造器了
-
构造器是一个方法,就可以重载
-
构造器可以帮助我们简化代码,在通过对象.属性之前,就可以为对象的属性赋值
-
构造器就是特殊的方法,特殊的创建方式,特殊的使用方式,特殊的作用,但是也是方法,所以有方法的重载特性
-
如何创建对象的时候指定匹配不同的构造器啊???
-
new 类型()->()匹配不同的参数列表
构造器
* new 关键字创建对象
* 1.在堆中为对象开辟空间,成员属性跟随对象进入到堆内存中,并赋默认值
* 2.调用这个类的构造器为对象初始化信息 (第一次赋值就叫做初始化,就成员属性)
* 3.将地址返回给引用
*
*
* 构造器: 构造方法: 构造函数
* 就是一个特殊的方法
* 1.作用: 就是为对象初始化信息,不是用来创建对象的
* 2.使用: 跟随new使用
* 3.定义
* 修饰符 类名(参数列表){
* 构造器…
* }
* 没有返回值类型,没有void,可以添加return
* 方法名必须与类名一致
* 不能和static,final,abstract一起使用
*
* 注意:
* 如果没有自定义的为类定义任何构造器,编译器会为你的类默认提供一个空构造(没有参数的构造器)
* 如果有显示定义任何构造器,编译器就不会再为你提供任意构造器了
* 构造器是一个方法,就可以重载
*
* 构造器可以帮助我们简化代码,在通过对象.属性之前,就可以为对象的属性赋值
* 构造器就是特殊的方法,特殊的创建方式,特殊的使用方式,特殊的作用,但是也是方法,所以有方法的重载特性
* 如何创建对象的时候指定匹配不同的构造器啊???
* new 类型()->()匹配不同的参数列表
*/
public class ConstructorDemo01 {
public static void main(String[] args) {
//先创建对象
Dog dog=new Dog(); //()->构造器的参数列表
//手动赋值
dog.color=“黄色”;
dog.type=“中华田园犬”;
//创建对象并且赋值
Dog dog2=new Dog("花色","加肥猫");
dog.dog();
dog2.dog();
Dog dog3=new Dog("黄色");
dog3.dog();
}
//构造器
public ConstructorDemo01(){}
}
public static void main(String[] args) {
//先创建对象
Dog dog=new Dog(); //()->构造器的参数列表
//手动赋值
dog.color="黄色";
dog.type="中华田园犬";
//创建对象并且赋值
Dog dog2=new Dog("花色","加肥猫");
dog.dog();
dog2.dog();
Dog dog3=new Dog("黄色");
dog3.dog();
}
//构造器
public ConstructorDemo01(){}
}
//Dog 类
class Dog{
public String color;
public String type;
//构造器 空构造
public Dog(){
System.out.println("我是空构造");
}
public Dog(String dogColor){
System.out.println("我是参数1");
color=dogColor;
}
//带参构造 2个参数
public Dog(String dogColor,String dogType){
color=dogColor;
type=dogType;
System.out.println("我是带参2");
}
//展示细节
public void dog(){
System.out.println(color+"---->"+type);
}
}