方法 规定做一件事的流程
格式:
//访问修饰符 返回值类型 方法名(方法参数){方法体;}
- 访问修饰符:用来修饰方法的访问权限,规定这个方法是否在其它类中也可以访问
- 返回值类型:通过执行方法后,需要得到的结果
- 如果需要返回数据,就使用return
- 没有返回值: void
- 方法名:给方法名起一个名字,方便多次使用
- 方法参数:执行方法需要的数据
- 方法体:具体实现的步骤
static:静态的—>随着类的加载而加载,—>意味着静态方法比非静态的的方法先执行
public class Method {
public static void main(String[] args) {
//调用方法
showLove();
}
/**
* public:访问修饰符: 设置公共,
*/
public static void showLove(){
System.out.println("123");
System.out.println("456");
System.out.println("789");
System.out.println("147");
System.out.println("258");
System.out.println("369");
}
}
访问修饰符:
- private:私有的,只能在本类中访问
- default:(默认类型)只能在同一个包中的类访问,或者在同一个类中
- protected 受保护的,可以在本类,同一个包中,以及子类进行访问
- public:公有的,任何地方都可以访问
创建类:
修饰符 class 类名{
//如int i;
//String name;
属性(类型)
//方法
修饰符 返回值类型 方法名(){
方法体
}
}
通过类创建对象
-
创建对象的语法 格式: 类名 对象名=new 类名();
调用成员变量(属性);成员方法(行为) 格式: -
对象名.成员方法();
-
对象名.成员变量;
public class Demo01 {
public static void main(String[] args) {
//创建类的同时 实例化(执行)造方法方法
Student ff=new Student();
//调用ff的name属性
ff.name="刘烨";
ff.age=18;
//通过ff调用eat()方法
ff.eat("KFC");
/**
* 通过调用别的类中没用对成员变量进行赋值的
* 基本数据类型默认为初始值
* 引用数据类型:默认为null
*/
System.out.println(ff.sex);
Person pp=new Person();
}
}
//创建类的方法一
//默认修饰符 default 只能在同一个包中,同一个类中
class Student{
String name;
String sex;
int age;
//吃饭
public void eat(String str){
System.out.println(name+"正在吃"+str);
}
//默认生成无参的构造方法,所有的属性初始化为默认值
public Student(){
}
//有参构造
public Student(String n,String s,int a){
name=n;
sex=s;
age=a;
}
}
普通的方法(五要素)
/* 修饰符 返回值类型 方法名(方法参数){
方法体
}
*/
class Student{
//属性
String name;
int age;
String sex;
}
构造方法 / 构造函数 /构造器:是一种特殊的方法
构造方法(四要素) 没有返回值类型,方法名和类名一致
/* 修饰符 方法名(方法参数){
方法体;
}
*/
class Student{
String name;
String sex;
int age;
//这个就是无参构造方法
public Student(){
}
//有参构造
public Student(String name,String sex,int age){
this.name=name;
this.sex=sex;
this.age=age;
}
}
方法的调用: 对象名.方法名()
构造方法的调用
new 类名();//创建对象的同时调用构造方法
如果在创建类的时候没有创建构造方法,系统会默认给创建一个构造方法.
构造方法的作用:对类中的属性(成员变量)进行初始化赋值
如果创建类的时候,有手动添加构造方法,系统就不会提供默认的构造方法
public class Demo02 {
public static void main(String[] args) {
//创建对象,并执行无参构造方法
Student ss=new Student();
ss.name="苏苏";
ss.age=18;
ss.sex="男";
//创建对象,并执行有参构造方法
Student ss1=new Student("小","男",18);
}
}
构造方法的注意事项:
关于构造的创建:
- 如果没有创建构造方法,系统会默认提供一个构造方法
- 如果定义构造方法,系统就不会提供默认一个构造方法
构造方法的重载(方法名相同,参数列表不同)
//如果自定义了带参数的构造方法,new对象的时候还是调用的无参构造,就必须再写一个无参构造
推荐的构造方法的创建方式
//无论是否使用,都需要手动添加一个无参构造
//重要功能:可以使用带参数的构造,对成员变量进行初始化
public class Demo03 {
static int b;//成员变量
public static void main(String[] args) {
int c;//局部变量
b=10;
}
public static void test(int d){//d也是局部变量
int c=20;//局部变量
}
}
实操:
1.创建Hero类
成员变量: x(英雄机的横坐标) y(英雄机的纵坐标) w(英雄机的宽度) h(英雄机的高度) hp(英雄机的血量)
构造方法:创建一个无参构造在构造器中初始化上述成员变量
例如:x=200;y=600;w=100;h=50;hp=10;
成员方法:
向上移动的方法moveUp() 其中:y--
向下移动的方法moveDown()其中:y++
向左移动的方法moveLeft()其中:x--
向右移动的方法moveRight()其中:x++
2.在main方法中创建Hero对象,依次调用上述方法,并输出移动后x y的值
创建敌机类Ep
成员变量:sp(敌机的速度) hp(敌机的血量) type(敌机的类型) x(敌机的横坐标) y(敌机的纵坐标) w(敌机的宽度) h(敌机的高度)
构造方法:创建一个无参构造,初始化上述变量
例如:type=5;w=20;h=20;x=10;y=10;sp=1;hp=5;
普通方法:
敌机移动的方法move()让敌机向下移动y++
2.在main方法中创建Ep对象,调用move方法,输出x y的值
public class Test {
public static void main(String[] args) {
Hero hero=new Hero();
hero.moveUP();
hero.moveDown();
hero.moveLeft();
hero.moveRight();
Ep ep=new Ep();
ep.move();
}
}
//英雄机
class Hero{
int x;//横坐标
int y;//纵坐标
int w;//飞机宽度
int h;//飞机的高度
int hp;//飞机的血量
//无参构造 初始化赋值
public Hero(){
x=200;
y=600;
w=100;
h=50;
hp=10;
}
//成员方法
public void moveUP(){
y--;
System.out.println("英雄机移动后的y值:"+y);
}
public void moveDown(){
y++;
System.out.println("英雄机移动后的y值:"+y);
}
public void moveLeft(){
x--;
System.out.println("英雄机移动后的x值:"+x);
}
public void moveRight(){
x++;
System.out.println("英雄机移动后的x值:"+x);
}
}
//敌机
class Ep{
int x;//横坐标
int y;//纵坐标
int w;//飞机宽度
int h;//飞机的高度
int hp;//飞机的血
int type;//敌机的类型
int sp;//敌机的速度
//无参构造 初始化赋值
public Ep(){
x=10;
y=10;
w=20;
h=20;
hp=5;
type=5;
sp=1;
}
public void move(){
y++;
System.out.println("敌机移动后的xy值:"+x+","+y);
}
}