1.对象的使用
类:对同一类具有相同属性和行为的事物的描述
对象:肉眼能够看得见摸得着的,能够被我们具体所描述出来的
对象有属性和方法(行为)
对象和类的关系:对象是类的具体实现,类是模板用来生产对象
public class Hero {
//昵称,
String name="萧峰";
//生命值
int health=100;
//忠诚度
int loyalty=0;
//职业
String occupation="战士";
String address="郑州";
//输出英雄信息
public void print() {
System.out.println("英雄的介绍:\n我的昵称是"+name+"\t生命值"+health+"\t忠诚度"+loyalty+"\t职业是"+occupation);
}
public void print03() {
System.out.println("雇佣兵的介绍:\n我的昵称是"+name+"\t生命值"+health+"\t出生地"+address);
}
//带返回值的方法
//谁调用这个方法,谁用这个方法的返回值
public String print01() {
name="大乔";
return name;
}
//有参方法 this--这个类的对象
public void print02(String name,int loyalty) {
this.name=name;
this.loyalty=loyalty;
}
public static void main(String[] args) {
Hero hero=new Hero();
hero.name="小乔";
hero.health=500;
hero.loyalty=100;
hero.occupation="法师";
hero.print();
}
演示示例:购买人物
import java.util.Scanner;
import shili1.Hero;
import shili2.Army;
public class Test{
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("欢迎您来到本网游!");
//1.输入人物昵称
System.out.println("请输入要购买人物的昵称:");
String name=input.next();
//2.选择人物类型
System.out.print("请选择要购买的人物类型:(1、英雄2、雇佣兵)");
int flag=input.nextInt();
switch (flag) {
case 1:
//如果是英雄,选择英雄职业
System.out.print("请选择英雄的职业:(1、骑士"+
"2、法师)");
int zhiFlag = input.nextInt();
String occupation = null;
if (zhiFlag ==1) {
occupation ="骑士";
}else{
occupation="法师";
}
Hero hero = new Hero();
hero.occupation=occupation;
hero.name=name;
hero.print();
hero.loyalty=90;
hero.health=90;
break;
default:
//如果是雇佣兵,选择雇佣兵出生地
System.out.println("请选择雇佣兵的出生地:(1、盗贼公社 2、弓箭手营房)");
int bthFlag = input.nextInt();
String birth = null;
if (bthFlag==1) {
birth ="盗贼公社";
}else{
birth="弓箭手营房";
}
Army army = new Army();
army.name=name;
army.birth=birth;
army.print();
break;
}
}
}
2.构造函数
定义:方法名和类名相同,无返回值
作用:用来给对象进行初始化值
类在被创建的时候,虚拟机会提供给我们一个无参构造函数。如果你写了一个构造函数,那么虚拟机提供的无参构造函数会被删除,所以一定要把无参构造函数写上
构造函数的重载:方法名和类名相同,参数类型和个数不同
/** * 构造方法 * 方法的重载:方法名和类名一样,参数列表不同(参数的类型和个数不同) */ //无参构造方法 public Hero(){ } public Hero(String name) { this.name=name; } public Hero(String name,int health) { this.name=name; this.health=health; } public static void main(String[] args) { Hero hero=new Hero(); String name=hero.print01(); hero.print(); hero.print02("提莫", 500); hero.print(); }
3.static修饰符
静态方法只能调用静态方法和非静态属性
static不能修饰局部变量
static修饰变量是一个类变量(全局变量),优先加载
修饰代码块
静态属性直接类名.属性/方法
4.final修饰变量----常量
/** * final的用法 */ public class TestSample5 { public static void main(String[] args) { Hero hero1 = new Hero(); HeroSex heroSex = new HeroSex(); System.out.println("第一个英雄的性别是" + hero1.sex + "。"); Hero hero2 = new Hero(); hero2.sex = heroSex.SEX_WOMEN; System.out.println("第二个英雄的性别是" + hero2.sex + "。"); Hero hero3 = new Hero(); hero3.sex = heroSex.SEX_MAN; System.out.println("第三个英雄的性别是" + hero3.sex + "。"); } }
5.封装
概念:封装是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
封装的步骤:1.属性私有化(private)
2.给属性get,set方法
get方法对象取值,set方法对象赋值
3.封装的好处
隐藏类的实现细节
方便地加入存取控制语句
增加安全性和可扩展性,限制不合理操作
6.this关键字
this通常指当前对象的引用,可以调用当前对象的成员
this.name;//调用当前对象的属性 this.print();//调用当前对象的方法
使用this调用成员变量,解决成员变量和局部变量的同名冲突
public void setName(String name){ this.name=name; //成员变量和局部变量同名,必须使用this } public void setName(String n){ n=name; //成员变量和局部变量不同名,this可以省略 }
使用this调用成员方法
public void work(int n){ health=health-n; this.print(); //this可以省略,直接调用print() }
使用this调用重载的构造方法,只能在构造方法中使用,必须是构造方法的第一条语句
this只能调用实例变量、实例方法和构造方法
public Army(String name,String birth){ this(name,birth); //调用重载的构造方法 this.name=name; this.name=birth; }
版权声明:本文为m0_67220270原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。