做金馆长网站网站,东莞营销推广,外资公司注册,自己怎么免费做百度推广文章目录 一、类的组合和复用二、实例成员与类成员所以总结一下#xff1a; 一、类的组合和复用
我当时第一次看见#xff0c;然后又看书上的定义#xff0c;感觉真的是”高大上“#xff0c;就是不好理解#xff0c;后来一查才发现超级简单。
类的组合和复用#xff1… 文章目录 一、类的组合和复用二、实例成员与类成员所以总结一下 一、类的组合和复用
我当时第一次看见然后又看书上的定义感觉真的是”高大上“就是不好理解后来一查才发现超级简单。
类的组合和复用简单来说就是在一个类中new另外一个类组合 eg
class Door{//字段和方法
}
class Wheel{//字段和方法
}
public class Car{Door d new Door();wheel w new wheel();//其他字段和方法
}而且可以不断的new同一个类复用 eg
public class Car{Door d new Door();wheel w1 new wheel();wheel w2 new wheel();wheel w3 new wheel();
}二、实例成员与类成员
类成员就是普通的变量或者方法前面加一个static。
简单来说类成员就相当于是所有类共同拥有的一个地方如果其中所有类都可以对其进行修改一经修改则其他类里面的该类成员也会变成修改后的东西。
只要含有类成员的类一经加载那么其中的类成员就会被分配内存始终都不会变如果不是类成员每new一次就会分配一个新内存。所以类成员可以直接通过类名.类成员 或者 对象.类成员 调用而实例成员只能靠对象调用。
这就会导致一个有意思的事情那就是重写的问题。 这里菜鸟为大家举两个列子
一、
class A{static int m;static void f() {m 20;}class B extends A{void f() {m 222;}}
}这里大家初看确实像没有问题但将其打入eclipse之后就知道了其会报错 This instance method cannot override the static method from A 意思是 实例方法无法重写来自A
然后如果你在B的方法前加一个static
class A{static int m;static void f() {m 20;}class B extends A{static void f() {m 222;}}
}这样并不会报错但你以为他重写了吗 其实并没有这个B只是隐藏了A中的f()。
这个你可以在B的上一行加上一个voerrideOverride 的作用是如果想重写父类的方法比如toString()方法的话在方法前面加上Override 系统可以帮你检查方法的正确性。
Override的用法Overridejava.lang.Override是一个marker annotation类型它被用作标注方法。它说明了被标注的方法重载了父类的方法起到了断言的作用。 )
所以总结一下
static方法是不能被重写的只能被覆盖。换句话说父类和子类中含有的其实是两个没有关系的方法它们的行为也并不具有多态性。