面向对象
类是模子,确定对象将会拥有的特性(属性)和行为(方法)
对象是类的实例表现,类是对象的类型,对象是特定类型的数据
面向对象:关注现实存在的事物的各方面的信息,从对象的角度出发,根据事物的特征进行程序设计
对象:用来描述客观事物的一个实体
类:具有相同属性和方法的一组对象的集合
属性和方法
属性:对象具有的各种静态特征,“对象有什么”
方法:对象具有的各种动态行为,“对象能做什么”
类---抽象的概念,模板
对象---一个看得到,摸得着的具体实体
实例化对象
实例化对象的过程可以分为两部分:
声明对象 Cat one(栈)
实例化对象 new Cat()(堆)
构造方法
也称构造函数,构造器
1、构造方法与类同名且没有返回值
2、构造方法的语句格式
public 构造方法名(){
//初始化代码
}
- 只能在对象实例化的时候调用
- 当没有指定构造方法时,系统会自动添加无参的构造方法
- 当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法
- 一个类中可以有多个构造方法
类和对象
定义类
public class 类名{
//定义属性部分
【访问修饰符】数据类型 属性名;
//定义方法部分
【访问修饰符】返回类型 方法名(参数){
}
}
创建并引用对象
类名 对象名=new 构造方法();
对象名.属性
对象名.方法名()
成员属性的初始值
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | '\u0000' |
boolean | false |
引用类型对象的初始值是null
this关键字
this:当前对象的默认引用
this的使用
1、 调用成员属性,解决成员属性和局部变量同名冲突
2、 调用成员方法
3、调用重载的构造方法
通过this()调用构造方法,必须放在方法体内第一行
代码
package com.doke;
/**
* 宠物猫类
* @author 大聪聪
*
*/
public class Cat {
//成员属性:昵称,年龄,体重,品种
String name;//昵称 String类型默认值null
int month;//年龄 int类型默认值0
double weight;//体重 double类型默认值0.0
String species;//品种
public Cat() {
System.out.println("我是无参构造方法");
}
public Cat(String name) {
this();
System.out.println("我是带参构造方法");
}
public Cat(String name,int month,double weight,String species) {
this.name=name;
this.month=month;
this.weight=weight;
this.species=species;
}
// public void Cat() {
// System.out.println("我只是一个普通方法,恰好方法名叫Cat");
// }
//成员方法:跑动,吃东西
//跑动的方法
public void run() {
// int age;
this.eat();//eat();也可以
System.out.println("小猫快跑");
// System.out.println(age);//定义了没有赋值无法输出
}
public void run(String name) {
System.out.println(name+"快跑");
}
//吃东西的方法
public void eat() {
System.out.println("小猫吃鱼");
}
}
package com.doke;
//单一职责原则
public class CatTest {
public static void main(String[] args) {
//对象实例化
Cat one = new Cat("花花",2,1000,"英国短毛猫");
Cat two = new Cat("花花");
// Cat two =new Cat();
// Cat two=one;
Cat one;//声明对象
// //测试
one.run();
one.eat();
// one.name="花花";
// one.month=2;
// one.weight=1000;
// one.species="英国短毛猫";
// two.name="凡凡";
// two.month=1;
// two.weight=800;
// two.species="中华田园猫";
//
System.out.println("昵称: "+one.name);
System.out.println("年龄: "+one.month);
System.out.println("体重: "+one.weight);
System.out.println("品种: "+one.species);
one.run(one.name);
// System.out.println("-----------------");
// System.out.println("昵称: "+two.name);
// System.out.println("年龄: "+two.month);
// System.out.println("体重: "+two.weight);
// System.out.println("品种: "+two.species);
one.run();
// one.Cat();
// one.eat();
}
}