java是如何解决这个问题的呢?

来源:2-2 【TS类准备】TS类底层根基,深入JS原型【不同以往的讲解,给你带去全新收获】

慕莱坞0998854

2021-07-27

老师你好,这一小节主要是讲了commonfriends和show方法定义在对象实例上所造成的空间浪费问题,我只是简单的接触过一点java,我想请教一下:

	public class User {
		static List<String> commonfriends = List.of("aaa","bbb","ccc"); 

		void show(){
			//...
		}
	}

1> 对于commonfriends这样的实例共有的属性,java应该是通过把它写成static xxx来避免空间浪费的吧?
2> 对于上述的show方法,这个如何避免空间浪费的呢?如上的写法应该每个实例都会有show方法吧?

写回答

3回答

keviny79

2021-07-30

大致说下:静态方法和属性是属于类的,只有是所有对象都有的共有属性才定义类,一个Person类,张三和李四的年龄属性都不一样,就不能定义为静态属性,学完单件模式这一章的静态属性9大规则就很清楚了

0
1
keviny79
说下:静态方法和属性是属于类的,只有是所有对象都有的共有属性才定义成静态,一个Person类,张三和李四的年龄属性都不一样,就不能定义为静态属性,学完单件模式这一章的静态属性9大规则就很清楚了
2021-07-30
共1条回复

keviny79

2021-07-29

后面第四章,第五章,手写继承源码都会讲到js和ts的静态属性,这里先大致说下:函数名.属性或属性名.方法就是定义和java相同理解的static属性和方法

0
2
keviny79
不好意思,刚注意到你的信息 Java不需要原型,因为Java把方法放在方法区中【jdk1.6在方法区中,jdk1.8在元空间】, Java无论创建多少对象,方法始终只分配一个空间,哪一个对象调用方法时,会自动进入方法栈帧【执行方法的一个栈区】执行,执行结束后会自动释放栈帧空间
2021-08-03
共2条回复

rookie_white

2021-07-27

同学,我不是老师。问错人了,Java我没接触过

0
3
慕莱坞0998854
回复
keviny79
谢谢老师了!
2021-07-30
共3条回复

晋级TypeScript高手,成为抢手的前端开发人才

轻松驾驭 TypeScript 高级用法, 突破前端成长瓶颈

871 学习 · 425 问题

查看课程