最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

java 对象能跨类吗,java

互联网 admin 31浏览 0评论

java 对象能跨类吗,java

构造器

特殊的方法:构造器(构造方法)

1.这个方法名字 -- 必须和类名完全一样

2.没有返回值,连void也写

3.不能用static修饰

public class MethodDemo1 {

public MethodDemo1() { //无参

System.out.println(123);

}

public MethodDemo1(int i) { //有参

}

public static void main(String[] args) {

Random r = new Random();

}

}

全局变量

局部变量使用前必须赋值

全局变量有默认值

public class ClassDemo3Test {

public static void main(String[] args) {

String str;

// System.out.println(str);

ClassDemo3 cd = new ClassDemo3();

System.out.println(cd.name);

cd.name = "李四";

System.out.println(cd.name);

// 整型0,浮点型0.0,布尔false,字符型\u0000,引用数据类型null

cd.show();

System.out.println(cd.age);

ClassDemo3 cd1 = new ClassDemo3();

cd1.name = "王五";

cd1.show();

}

}

就近原则

找其最近的变量

public class ClassDemo4 {

String name;

// 就近原则

public void show(String name) {

System.out.println(name);

}

public void test() {

show("赵六");

System.out.println(name);

}

}

对相类数组

public class ClassDemo6 {

public static void main(String[] args) {

int num = 10;

int arr[] = {num};

Student s1 = new Student("zhangsan","man",22);

Student s2 = new Student("lishi","woman",32);

Student s3 = new Student("wanghu","man",66);

Student s[] = {s1,s2,s3};

遍历这个数组,打印出所有学员的详细信息

// for(int i = 0;i < s.length;i++) {

// Student stu = s[i];

// System.out.println(stu.name);

// }

for(Student stu : s) {

System.out.println(stu.name+","+stu.gender+","+stu.age);

}

}

}

匿名对象

匿名对象 : 没有引用指向的对象,它只能使用一次

public class Demo1 {

public void test1() {

System.out.println(123);

}

public void test2() {

System.out.println(456);

}

public static void main(String[] args) {

// Demo1 d = new Demo1();

// d.test1();

// d.test2();

new Demo1().test1();//匿名

new Demo1().test2();//匿名

}

}

垃圾自动回收机制(GC)

JVM会把堆中没有引用指向的对象视为垃圾对象,当这个对象执行完对应的工作,JVM虚拟机

会自动找到这些垃圾对象调用其finalize()回收内存

this关键字

this : 代表当前类对象

①this.属性名,this.方法()

②this() : 只能用在构造器中,调用其他构造器,在一个构造器中只能用一次,并且必须在第一行使用

public class Demo3 {

String name = "张三";

public Demo3() {

this("李四");

System.out.println(1);

}

public Demo3(String name) {

this.name=name;

System.out.println(123);

}

// public void show() {

// String name = "李四";

// System.out.println(name);

// System.out.println(this.name);

// test();

// }

// public void test() {

// System.out.println(123);

// }

public static void main(String[] args) {

Demo3 d = new Demo3();

d.name = "1";

Demo3 d1 = new Demo3();

d1.name = "1";

System.out.println(d.name);

}

}

封装(四个访问权限修饰符)

Java面相对象特性:继承,封装,多态,抽象

抽象(程序员将现实实物抽象为脑中概念模型)

封装 :将一套功能组织成一个方法,将一套方法加一套属性组织到一个类,将一套类组织到一个包中

访问权限修饰符

/*

public : 公有,工程中可见

能修饰类,方法,属性(全局变量)

protected : 受保护的,当前包可见,跨包的“亲戚”可见,“非亲戚”不可见

能修饰方法和属性

【friendly,default】:默认的,跨包不可见

能修饰类,方法,属性(全局变量)

private : 私有的,只有当前类可见

能修饰方法和属性

*/

JavaBean(实体类) :

1.有无参构造器(必要)

2.属性全部私有

3.有公有的get(获取)和set(修改)方法

public class Student {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

//单例模式:

保证一个类只能有一个实例(一个类只能创建一个对象)

/*

* 1.:如何解决多例(不能让其他类随意使用构造器)

* 构造器私有

private Singletion() {}

* 2.:如何解决提供一个实例

* 在当前位置创建一个实例

static Singletion singletion = new Singletion();

* 3.:不能随意修改

* 将创建的实例也私有

private static Singletion singletion = new Singletion();

* 4.:如何获取这个实例

* 提供一个public的方法将这个实例反出去

* */

懒汉模式(懒加载),调用的时候就创建,不调用就不创建

private static Singletion singletion;

public static Singletion getSingletion() {

if(singletion == null) {

singletion=new Singletion();

}

return singletion;

}

饿汉模式

private static Singletion singletion = new Singletion();

public static Singletion getSingletion() {

return singletion;

}

生成一副扑克牌

public class Poker {

String suit;// 花色

String count;// 点数

public void giveMe() {

String hs[] = {"红桃","黑桃","方片","草花"};

String ds[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

// 写一个循环,生成一副扑克

Poker pokers[] = new Poker[52];

int index = 0;

// 遍历数组,取到hs[]和ds[]的所有组合,给Poker对象赋值,然后存入pokers[]

for(int i = 0;i < hs.length;i++) {

for(int j = 0;j < ds.length;j++) {

pokers[index] = new Poker();

pokers[index].suit = hs[i];

pokers[index].count = ds[j];

index++;

}

}

for(Poker p : pokers) {

System.out.print(p.suit+p.count+" ");

System.out.println();

}

}

public static void main(String[] args) {

Poker p = new Poker();

p.giveMe();

}

}

控制台模拟植物大战僵尸

僵尸类:

public class Zoombie {

int hp = 500;

int dps = 30;

/**

* 攻击

* @param sf 向日葵对象

*/

public void attack(SunFlower sf) {

if(hp <= 0) {

System.out.println("对不起,僵尸没血,无法攻击");

}

else {

// 判断向日葵是否有血

if(sf.hp <= 0) {

System.out.println("向日葵没有血了,严禁鞭尸");

}

// 僵尸有hp,对方也有

else {

System.out.println("僵尸对向日葵造成了 "+dps+" 点伤害");

// 对方掉血

sf.hp = sf.hp - dps;

// 如果是负数,归0

if(sf.hp <= 0) {

sf.hp = 0;

System.out.println("向日葵已经死亡");

return;

}

System.out.println("向日葵还剩 "+sf.hp+" 点血量");

}

}

}

public void attack(BeanHunter bh) {

if(hp <= 0) {

System.out.println("对不起,僵尸没血,无法攻击");

}

else {

// 判断向日葵是否有血

if(bh.hp <= 0) {

System.out.println("豌豆射手没有血了,严禁鞭尸");

}

// 僵尸有hp,对方也有

else {

System.out.println("僵尸对豌豆射手造成了 "+dps+" 点伤害");

// 对方掉血

bh.hp = bh.hp - dps;

// 如果是负数,归0

if(bh.hp < 0) {

bh.hp = 0;

}

System.out.println("豌豆射手还剩 "+bh.hp+" 点血量");

}

}

}

}

向日葵类:

public class SunFlower {

int hp = 300;

/**

* 回血方法

*/

public void addBuff() {

hp = hp + 20;

if(hp > 300) {

hp = 300;

}

System.out.println("向日葵进行了光合作用,回复了20点血,目前血量 "+hp);

}

}

豌豆射手

public class BeanHunter {

int hp = 200;

int dps = 60;

public void attack(Zoombie z) {

if(hp <= 0) {

System.out.println("对不起,豌豆射手没血,无法攻击");

}

else {

if(z.hp <= 0) {

System.out.println("僵尸没有血了,严禁鞭尸");

}

else {

System.out.println("豌豆射手对僵尸造成了 "+dps+" 点伤害");

// 对方掉血

z.hp = z.hp - dps;

// 如果是负数,归0

if(z.hp < 0) {

z.hp = 0;

System.out.println("僵尸GG了");

return;

}

System.out.println("僵尸还剩 "+z.hp+" 点血量");

}

}

}

}

测试类:

public class Test {

public static void main(String[] args) {

Zoombie z = new Zoombie();

SunFlower sf = new SunFlower();

BeanHunter bh = new BeanHunter();

while(true) {

if(z.hp <= 0) {

System.out.println("植物胜利");

break;

}

if(sf.hp <= 0 && bh.hp <= 0) {

System.out.println("僵尸胜利");

break;

}

// 互相伤害

// 生成随机数

double random = Math.random();// [0,1)

if(random <= 0.3) {

z.attack(sf);

}else if(random <= 0.5) {

z.attack(bh);

}else if(random <= 0.8) {

bh.attack(z);

}else {

sf.addBuff();

}

try {

Thread.sleep(1000);// 休眠1000毫秒,即1秒

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

java 对象能跨类吗,java

构造器

特殊的方法:构造器(构造方法)

1.这个方法名字 -- 必须和类名完全一样

2.没有返回值,连void也写

3.不能用static修饰

public class MethodDemo1 {

public MethodDemo1() { //无参

System.out.println(123);

}

public MethodDemo1(int i) { //有参

}

public static void main(String[] args) {

Random r = new Random();

}

}

全局变量

局部变量使用前必须赋值

全局变量有默认值

public class ClassDemo3Test {

public static void main(String[] args) {

String str;

// System.out.println(str);

ClassDemo3 cd = new ClassDemo3();

System.out.println(cd.name);

cd.name = "李四";

System.out.println(cd.name);

// 整型0,浮点型0.0,布尔false,字符型\u0000,引用数据类型null

cd.show();

System.out.println(cd.age);

ClassDemo3 cd1 = new ClassDemo3();

cd1.name = "王五";

cd1.show();

}

}

就近原则

找其最近的变量

public class ClassDemo4 {

String name;

// 就近原则

public void show(String name) {

System.out.println(name);

}

public void test() {

show("赵六");

System.out.println(name);

}

}

对相类数组

public class ClassDemo6 {

public static void main(String[] args) {

int num = 10;

int arr[] = {num};

Student s1 = new Student("zhangsan","man",22);

Student s2 = new Student("lishi","woman",32);

Student s3 = new Student("wanghu","man",66);

Student s[] = {s1,s2,s3};

遍历这个数组,打印出所有学员的详细信息

// for(int i = 0;i < s.length;i++) {

// Student stu = s[i];

// System.out.println(stu.name);

// }

for(Student stu : s) {

System.out.println(stu.name+","+stu.gender+","+stu.age);

}

}

}

匿名对象

匿名对象 : 没有引用指向的对象,它只能使用一次

public class Demo1 {

public void test1() {

System.out.println(123);

}

public void test2() {

System.out.println(456);

}

public static void main(String[] args) {

// Demo1 d = new Demo1();

// d.test1();

// d.test2();

new Demo1().test1();//匿名

new Demo1().test2();//匿名

}

}

垃圾自动回收机制(GC)

JVM会把堆中没有引用指向的对象视为垃圾对象,当这个对象执行完对应的工作,JVM虚拟机

会自动找到这些垃圾对象调用其finalize()回收内存

this关键字

this : 代表当前类对象

①this.属性名,this.方法()

②this() : 只能用在构造器中,调用其他构造器,在一个构造器中只能用一次,并且必须在第一行使用

public class Demo3 {

String name = "张三";

public Demo3() {

this("李四");

System.out.println(1);

}

public Demo3(String name) {

this.name=name;

System.out.println(123);

}

// public void show() {

// String name = "李四";

// System.out.println(name);

// System.out.println(this.name);

// test();

// }

// public void test() {

// System.out.println(123);

// }

public static void main(String[] args) {

Demo3 d = new Demo3();

d.name = "1";

Demo3 d1 = new Demo3();

d1.name = "1";

System.out.println(d.name);

}

}

封装(四个访问权限修饰符)

Java面相对象特性:继承,封装,多态,抽象

抽象(程序员将现实实物抽象为脑中概念模型)

封装 :将一套功能组织成一个方法,将一套方法加一套属性组织到一个类,将一套类组织到一个包中

访问权限修饰符

/*

public : 公有,工程中可见

能修饰类,方法,属性(全局变量)

protected : 受保护的,当前包可见,跨包的“亲戚”可见,“非亲戚”不可见

能修饰方法和属性

【friendly,default】:默认的,跨包不可见

能修饰类,方法,属性(全局变量)

private : 私有的,只有当前类可见

能修饰方法和属性

*/

JavaBean(实体类) :

1.有无参构造器(必要)

2.属性全部私有

3.有公有的get(获取)和set(修改)方法

public class Student {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

//单例模式:

保证一个类只能有一个实例(一个类只能创建一个对象)

/*

* 1.:如何解决多例(不能让其他类随意使用构造器)

* 构造器私有

private Singletion() {}

* 2.:如何解决提供一个实例

* 在当前位置创建一个实例

static Singletion singletion = new Singletion();

* 3.:不能随意修改

* 将创建的实例也私有

private static Singletion singletion = new Singletion();

* 4.:如何获取这个实例

* 提供一个public的方法将这个实例反出去

* */

懒汉模式(懒加载),调用的时候就创建,不调用就不创建

private static Singletion singletion;

public static Singletion getSingletion() {

if(singletion == null) {

singletion=new Singletion();

}

return singletion;

}

饿汉模式

private static Singletion singletion = new Singletion();

public static Singletion getSingletion() {

return singletion;

}

生成一副扑克牌

public class Poker {

String suit;// 花色

String count;// 点数

public void giveMe() {

String hs[] = {"红桃","黑桃","方片","草花"};

String ds[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

// 写一个循环,生成一副扑克

Poker pokers[] = new Poker[52];

int index = 0;

// 遍历数组,取到hs[]和ds[]的所有组合,给Poker对象赋值,然后存入pokers[]

for(int i = 0;i < hs.length;i++) {

for(int j = 0;j < ds.length;j++) {

pokers[index] = new Poker();

pokers[index].suit = hs[i];

pokers[index].count = ds[j];

index++;

}

}

for(Poker p : pokers) {

System.out.print(p.suit+p.count+" ");

System.out.println();

}

}

public static void main(String[] args) {

Poker p = new Poker();

p.giveMe();

}

}

控制台模拟植物大战僵尸

僵尸类:

public class Zoombie {

int hp = 500;

int dps = 30;

/**

* 攻击

* @param sf 向日葵对象

*/

public void attack(SunFlower sf) {

if(hp <= 0) {

System.out.println("对不起,僵尸没血,无法攻击");

}

else {

// 判断向日葵是否有血

if(sf.hp <= 0) {

System.out.println("向日葵没有血了,严禁鞭尸");

}

// 僵尸有hp,对方也有

else {

System.out.println("僵尸对向日葵造成了 "+dps+" 点伤害");

// 对方掉血

sf.hp = sf.hp - dps;

// 如果是负数,归0

if(sf.hp <= 0) {

sf.hp = 0;

System.out.println("向日葵已经死亡");

return;

}

System.out.println("向日葵还剩 "+sf.hp+" 点血量");

}

}

}

public void attack(BeanHunter bh) {

if(hp <= 0) {

System.out.println("对不起,僵尸没血,无法攻击");

}

else {

// 判断向日葵是否有血

if(bh.hp <= 0) {

System.out.println("豌豆射手没有血了,严禁鞭尸");

}

// 僵尸有hp,对方也有

else {

System.out.println("僵尸对豌豆射手造成了 "+dps+" 点伤害");

// 对方掉血

bh.hp = bh.hp - dps;

// 如果是负数,归0

if(bh.hp < 0) {

bh.hp = 0;

}

System.out.println("豌豆射手还剩 "+bh.hp+" 点血量");

}

}

}

}

向日葵类:

public class SunFlower {

int hp = 300;

/**

* 回血方法

*/

public void addBuff() {

hp = hp + 20;

if(hp > 300) {

hp = 300;

}

System.out.println("向日葵进行了光合作用,回复了20点血,目前血量 "+hp);

}

}

豌豆射手

public class BeanHunter {

int hp = 200;

int dps = 60;

public void attack(Zoombie z) {

if(hp <= 0) {

System.out.println("对不起,豌豆射手没血,无法攻击");

}

else {

if(z.hp <= 0) {

System.out.println("僵尸没有血了,严禁鞭尸");

}

else {

System.out.println("豌豆射手对僵尸造成了 "+dps+" 点伤害");

// 对方掉血

z.hp = z.hp - dps;

// 如果是负数,归0

if(z.hp < 0) {

z.hp = 0;

System.out.println("僵尸GG了");

return;

}

System.out.println("僵尸还剩 "+z.hp+" 点血量");

}

}

}

}

测试类:

public class Test {

public static void main(String[] args) {

Zoombie z = new Zoombie();

SunFlower sf = new SunFlower();

BeanHunter bh = new BeanHunter();

while(true) {

if(z.hp <= 0) {

System.out.println("植物胜利");

break;

}

if(sf.hp <= 0 && bh.hp <= 0) {

System.out.println("僵尸胜利");

break;

}

// 互相伤害

// 生成随机数

double random = Math.random();// [0,1)

if(random <= 0.3) {

z.attack(sf);

}else if(random <= 0.5) {

z.attack(bh);

}else if(random <= 0.8) {

bh.attack(z);

}else {

sf.addBuff();

}

try {

Thread.sleep(1000);// 休眠1000毫秒,即1秒

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

发布评论

评论列表 (0)

  1. 暂无评论