java——类与对象

    科技2024-11-05  10

    类与对象基本概念

    类: 类是抽象的概念集合,表示的是一个共性的产物,其中包括了特征和方法

    类的实现样例:

    public class Man { private String name; protected int HP; protected int AG; public void setName(String s) { name=s; } public String getName() { return name; } public void setHP(int n) { HP=n; } public int getHP() { return HP; } public void setAG(int n) { AG=n; } public int getAG() { return AG; } public void loseHP(int n) { HP-=n; } public void attack1(Man m) { m.loseHP(AG); } }

    对象: 对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。对于类来说,对象是抽象的类的具体化实现。

    主函数中对象的创建和使用:

    public class Main { public static void main(String[] args) { Hero Langren = new Hero(); Hero Kasha = new Hero(); Boss BOSS = new Boss(); Langren.setName("狼人"); Langren.setHP(100); Langren.setAG(20); Kasha.setName("卡莎"); Kasha.setHP(80); Kasha.setAG(25); BOSS.setName("BOSS"); BOSS.setHP(100); BOSS.setAR(5); BOSS.setAG(5); Hero winner; int win=0; while(true) { Langren.attack1(Kasha); System.out.println(Langren.getName()+"正在攻击"+Kasha.getName()+","+Kasha.getName()+"掉血"+Langren.getAG()+",剩余血量"+Kasha.getHP()); if (Kasha.getHP()<=0) { win=1; break; } Kasha.attack1(Langren); System.out.println(Kasha.getName()+"正在攻击"+Langren.getName()+","+Langren.getName()+"掉血"+Kasha.getAG()+",剩余血量"+Langren.getHP()); if (Langren.getHP()<=0) { win=2; break; } } if (win==1) { System.out.println("狼人获胜!"); winner = Langren; } else { System.out.println("卡莎获胜!"); winner = Kasha; } win=0; while(true) { winner.attack1(BOSS); System.out.println(winner.getName()+"正在攻击"+BOSS.getName()+","+BOSS.getName()+"掉血"+(winner.getAG()-BOSS.getAR())+",剩余血量"+BOSS.getHP()); if (BOSS.getHP()<=0) { win=1; break; } BOSS.attack1(winner); System.out.println(BOSS.getName()+"攻击"+winner.getName()+"两次,"+winner.getName()+"掉血"+BOSS.getAG()*2+",剩余血量"+winner.getHP()); if (winner.getHP()<=0) { win=2; break; } } if (win==1) { System.out.println(winner.getName()+"获胜!"); } else System.out.println(BOSS.getName()+"获胜!"); } }

    类的继承

    修饰符相关: java中继承方式包括:public(公用的),private(私有的),protected(受保护的),默认 1、public为公有的,对所有类可用 2、private为私有的,只对同一类可用 3、protected为受保护的,对于同一类的子类可用 4、默认即default,与protected的区别在于不可以跨包继承

    继承实例:

    public class Animal{ public void move(){ System.out.println("动物可以移动"); } } public class Dog extends Animal{ public void move(){ System.out.println("狗可以跑和走"); } }

    类的重写

    重写的条件: 1、参数列表完全相同 2、返回值类型相同 3、父类方法只能被子类重写 4、访问权限不能比父类中方法的访问权限低,如父类是public,子类不能是protected

    以下重写的实例:

    package leidejicheng; public class Boss extends Man { private int AR; public void setAR(int ar) { AR = ar; } public int getAR() { return AR; } public void loseHP(int n) { HP -= n+AR; } public void attack1(Man m) { m.loseHP(AG); m.loseHP(AG); } }

    Boss类是Man类的子类,对于loseHP和attack1方法都进行了重写

    转型

    java中转型分为向上转型和向下转型

    向上转型 假设A和B为两个类,A为父类,B为子类

    A a; a = new B();

    向上转型中调用对象的方法时,可以调用到子类中重写的方法,但是子类自己特有的方法会缺失。

    向下转型

    A a; a = new B(); B b = (B)a;

    向下转型后的对象调用的方法将都会是子类中重写或者新定义的方法。

    Processed: 0.026, SQL: 8