java学习第五天
2020-01-08 本文已影响0人
toro宇
关键字static
当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用.我们有时候希望无论是否产生对象或无论产生多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必再每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。
如果想让一个类的所有与实例共享数据,就用类变量
类方法主要用做工具类。 在static方法内部职能访问类的static属性,不能访问类的非static属性。
在实际开发中,static静态代码块用在初始化类的静态属性(static类型的属性)
关键字:final
接口
‘
接口常见的处理场景是作为委托代理。
用来做回调,类之间的交互处理。
在一个类中声明一个接口定义 场景方法, 再声明一个委托属性。 如果哪个类要进行场景方法的交互。就作为该类的委托代理(实现代理方法)。如果只是简单的回调,也可以实现匿名类来进行回调如:
接口() { // 实现接口响应的方法
}
A类:
private OnClickItemListener listener; //声明代理
public interface OnClickItemListener{ // 通过定义接口实现代理
void onClick(int position);
}
B类: 实现匿名代理
new LinearCyclerAdapter.OnClickItemListener(){
@Override
public void onClick(int position) {
Toast.makeText(LinearCyclerViewActivity.this,"position:" + position,Toast.LENGTH_SHORT).show();
}
}
抽象类是对于一类事物的高度抽象,其中既有属性也有方法,接口是对方法的抽象,也就是对一系列动作的抽象。
工厂方法(FactoryMethod)
可以使用内部类来变相实现多重继承
package dayo9;
public class Test4 {
public static void main(String[] args) {
A a = new A();
a.testB();
a.testC();
}
}
class A{
public void testB() {
new InnerB().testB();
}
public void testC() {
new InnerC().testC();
}
private class InnerB extends B{
@Override
public void testB() {
// TODO Auto-generated method stub
super.testB();
System.out.println("这是重写B后的方法");
}
}
private class InnerC extends C{
@Override
public void testC() {
// TODO Auto-generated method stub
super.testC();
System.out.println("这是重写C后的方法");
}
}
}
class B{
public void testB() {
}
}
class C{
public void testC() {
}
}