对象与类的概念;
对象 : 用来描述现实生活中真实存在的事物
类 : 定义一系列对象的共性|图纸|模板
修饰符 类名{
//成员变量 : 不被static关键字修饰的方法--> 实例变量
修饰符 数据类型 变量名 = 赋值;
//成员方法 : 不被static关键字修饰的方法--> 实例方法
修饰符 返回值类型|void 方法名(参数列表){
方法体;
[return 返回值;]
}
}
例如:一个手机类
public class Class001_Phone {
//成员位置: 类中方法外
//颜色,品牌,尺寸,价格
public String color;
public String brand;
public double size;
public int money;
//打电话
public void call(){
System.out.println("从前有一个人长得像电话,出门就被打了!!!!");
}
}
类的测试:
1) 导包 : 指明当前类的位置
import 包名.类名;
位置:类的上面
不需要导包的类:
1.java.lang包下的内容
2.同包下的类
2) 创建类型的引用|变量--->创建对象 new具有创建对象能力
数据类型 变量名 = new 数据类型();
3) 使用
引用.成员变量
引用.成员方法()
注意:
跟随对象使用成员
public class Class002_PhoneTest {
public static void main(String[] args) {
//1.创建一个手机对象->描述生活中我自己正在使用的这一台手机
Class001_Phone p1 = new Class001_Phone();
//2.成员变量
p1.color = "白色";
p1.brand = "华为";
p1.size = 6.5;
p1.money = 7000; //mete40pro
System.out.println(p1.color);
System.out.println(p1.brand);
System.out.println(p1.size);
System.out.println(p1.money);
//3.成员方法
p1.call();
}
}
构造器: 构造方法 | 构造函数(特殊的方法)
作用: 为对象初始化信息 (初始化: 第一次赋值)
使用: 跟随new一起使用(new第二步所调用的)
定义:
修饰符 类名(参数列表){
方法体;
}
注意: 不需要返回值类型,也没有void
可以根据需要定义return关键字,作用提前结束方法
构造器的名字与类名保持一致
例如:在类中的使用
public class Class001_Constructor {
public static void main(String[] args) {
//先成员对象
Dog dog = new Dog();
//new Dog();
//为对象的成员赋值
//dog.name = "";
//dog.type = "";
dog.lookDoor();
//创建对象的同时赋值
new Dog("馒头").lookDoor();
new Dog("麻团","中华田园犬","斑点").lookDoor();
}
}
class Dog{
public String name;
public String type;
public String color;
//空构造: 没有参数的构造器
public Dog(){
System.out.println("空构造");
}
public Dog(String dogName){
System.out.println("一个参数构造");
//把实参接收到的数据赋值给了当前对象的成员变量name
name = dogName;
}
public Dog(String dogName,String dogType,String dogColor){
System.out.println("三个参数构造");
//把实参接收到的数据赋值给了当前对象的成员变量name
name = dogName;
type = dogType;
color = dogColor;
}
public void lookDoor(){
System.out.println(name+"正在看家....");
}
}
特点:
- 构造器也是特殊的方法,定义多个重载构造器,构造器的名字都与类名保持一致,参数列表不同就能构成重载构造器
- 如果没有显示的定义构造器,编译器会自动为类提供一个空构造
- 如果存在显示定义的构造器,编译器不会提供任意构造器
this 关键字
指代当前对象(new的对象)-->存储所有指向的对象的地址
构造器的首行调用本类中的其他构造器
public class Class001_This {
public static void main(String[] args) {
Dog dog = new Dog("斑点波比","萨摩耶","白色");
dog.show();
Dog dog2 = new Dog("小白");
dog2.show();
System.out.println("dog2的地址"+dog2);
}
}
class Dog{
public String name;
public String type;
public String color;
//构造器
public Dog(){
System.out.println("空构造");
}
public Dog(String name){
System.out.println("一个参数构造");
this.name = name;
System.out.println("this地址" + this);
}
public Dog(String name,String type){
System.out.println("二个参数构造");
this.name = name;
this.type = type;
}
public Dog(String dogName,String dogType,String dogColor){
this(dogName,dogType);
color = dogColor;
System.out.println("三个参数构造");
}
public void lookDoor(){
System.out.println(name+"正在看家....");
}
public void show(){
String name = "局部的name值";
//this在成员方法中默认指代当前调用成员方法的对象
System.out.println(this.name+"-->"+type+"-->"+color);
}
}
注意:
1.多个构造器之间不能相互调用,否则无法停止调用
2.在static修饰的内容中不能使用this