java基础--类、方法重载、构造器、对象

来源:互联网 发布:超级优化基因液txt 编辑:程序博客网 时间:2024/05/20 20:56

开启java学习之旅--基础部分

1.类--说明:类是由属性和方法构成的
    属性:又叫做特征,它是静态的、java中称作是一个字段或者域
    方法:又叫做行为,它是动态的、java又称为函数
    形式:关键字:class+类名+{}
2.方法:访问权限+返回值类型+()+{}
3.构造器:它的注意事项
/** * 构造器是创建对象用的 * 构造方法没有返回值 * 构造器的名字与类名一致 * 平常书写一般方法的时候注意,不要用类名 * 构造器不能被手动调用,而是在创建对象的时候自动调用 * 构造器通常是用来给成员变量赋值用的 * 如果某个类没有定义构造,编译器认为有一个公有的默认的无参空构造 * 即:编译器认为有 public 类名(){} * 当你有构造器之后,编译器认为你知道如何去创建一个对象, * 不再提供无参的空构造。 * 在构造器中调用另一个构造器,该语句写在第一行 */
4.对象:思想--万物皆对象--需要什么就
其实光看定义的话,新手可能觉得有些抽象,话不多少,上代码(代码可以自己复制去调试)
1.类+方法--创建一个人类及人类有的一些方法
       --注意创建类和方法的形式
       --有的人可能会疑问为什么不写访问权限?public or private?那是因为不写的话编辑器会默认为public的
class People{String name;int age;char gender;/** * 人会吃,人有吃的行为--eat方法
 */public void eat(){System.out.println("吃好吃的");}/** * 人会睡,人有睡的行为--sleep方法 */public void sleep(){System.out.println("睡饱饱的");}}

2.方法的重载--对照着注释进行学习

       /** * 方法重载:参数名相同,列表不同(参数的个数不同、参数的类型不同、参数的顺序) */public void study(int hours) {System.out.println("我要学习" + hours + "小时");}public void study(String subject) {System.out.println("我要学习" + subject);}public void study(int hours, String subject) {System.out.println("我要学习" + subject + hours + "小时");}/** * 构造方法:与类同名,无返回值类型,方便创建对象 构造方法的重载 */public Student() {System.out.println("无参构造方法");}public Student(int age, String name) {System.out.println(name + "有参构造方法" + age);}}

3.构造器和构造器的重载

public class Student {String name;long id;int age;Bag bag;public Student(){this("方文奇");System.out.println("无参构造被调用了");}/** * 构造器重载 */public Student(String name){this(name, 25);System.out.println("一个参数的构造被调用了");//this.name = name;   // self}/** * 构造器重载 *//*public Student(String stuName, int stuAge){name = stuName;age = stuAge;}*/public Student(String name, int age){System.out.println("两个参数的构造被调用了");this.name = name;this.age = age;}public void study(){System.out.println(name + "Say:Good good study, day day up!");this.play();}/** * 重载一个study方法 * 重载(overload)的概念:在同一个类中,或者父子类中,方法名相同,而形参列表不同多个方法形成重载。 * 访问权限修饰符,返回值类型,并不影响重载 * 形参列表不同具体又分为: * 形参列表的个数不同 * 形参列表的数据类型不同 * 方法名不同不叫重载 *  * @param hours */public void study(int hours){System.out.println("我要学习" + hours + "小时");}/** * 重载一个study方法,注意类型 */public void study(String subject){System.out.println("我在学习" + subject);}/** * 重载一个study方法,注意个数 */public void study(String subject, int hours){System.out.println("我在学习" + subject + ",我要学" + hours + "小时");}/** * 重载一个study方法,注意顺序 */public void study(int hours, String subject){System.out.println("我要学" + hours + "小时的" + subject);}public void talk(){System.out.println("I think i can, so i can");}public void play(){System.out.println(this.name + "说,学累了玩会儿,劳逸结合");}public String toString(){this.bag = new Bag();return "姓名:"+this.name+",年龄:"+age +",我有个包:"+this.bag;}}

4.对象

int age=20;
public void eat(){
}
public static void main(String[] args) {
Student s1 = new Student();
s1.age;//调用参数age
s1.eat();//调用eat()方法
}
用Student类去创建一个名字为s1的对象(开辟了一块空间,s1指向这块空间的地址),使用对象是为了更好的去调用方法或者参数

5.实战--写一个英雄类和一个野怪类,英雄和野怪都有自己属性,然后让英雄和野怪进行pk

(读者在都代码时可以将英雄和野怪都各自创建一个类,这里是粘杂一起,方便对比查看学习)
//英雄类和野怪类
import java.util.Scanner;public class demo1{Scanner scanner = new Scanner(System.in);public void Attack() {String choice=scanner.nextLine();if (choice.equals("y")) {System.out.println("Win!剩余血量为:2600");}else {System.out.println("已逃跑、、、");}}}// 技能类class Skill {String skill;boolean flag;String xiaoguo;String shanghai;public Skill(String skill, boolean flag, String xiaoguo, String shanghai) {this.skill = skill;this.flag = flag;this.xiaoguo = xiaoguo;this.shanghai = shanghai;}public String toString() {return skill + " " + (flag ? "主动" : "被动") + " " + "效果是:" + xiaoguo+ " 伤害是:" + shanghai;}}class Hero {String name;char sex;int id;int blood;Skill[] skill;public Hero(String name, char sex, int id, int blood) {this.name = name;this.sex = sex;this.id = id;this.blood = blood;}public void initSkill() {skill = new Skill[5];skill[0] = new Skill("我的1技能是:沉重打击", true, "沉默", "300");skill[1] = new Skill("我的2技能是:无畏之盾", true, "坚韧", "0");skill[2] = new Skill("我的3技能是:无敌旋转", true, "打击", "500");skill[3] = new Skill("我的4技能是:致命之剑", true, "杀人", "1000");skill[4] = new Skill("我的被动是 :日炎灼烧", false,"灼烧", "200");}public void show() {System.out.println("嘿,boy! my name is " + this.name + ",我是一个"+ this.sex + "人,我的id是" + this.id + ",我的血量是:" + blood);initSkill();for (int i = 0; i < skill.length; i++) {System.out.println(skill[i]);}}}class yeguai {String name;int attack;int blood;public yeguai(String name) {this.name = name;}public void initAttack() {attack = 600;blood = 2200;}public void show() {System.out.println("野怪的名字为:" + this.name);initAttack();System.out.println("魔爪蛙的攻击力为:" + this.attack + ",它的血量为:" + blood);}}

//测试

public class Test {public static void main(String[] args) {System.out.println("英雄简介:");Hero hero=new Hero("盖伦",'女',2019,5000);hero.show();System.out.println("---------------------------------------");System.out.println("怪物简介:");yeguai ye=new yeguai("魔爪蛙");ye.show();System.out.println("---------------------------------------");System.out.println("是否进行攻击?(y or n)");demo1 de=new demo1();de.Attack();}}


原创粉丝点击