Java自学笔记(十二)

几个关键字(final/static)

final:可以用来修饰类,类的成员,以及局部变量
注意:final修饰的类不能被继承,但可以继承其他类,俗称“太监类”?
          final修饰的方法不可以被重写(覆盖),如果父类中没有被final修饰方法,子类重写之后可以补充final;
          final修饰的变量其实是常量,不能再次赋值。可以再构造方法中给final赋值,只要在创建对象前赋值,还是可以的。
          final Fu fu = new Fu();//内存地址不变

class Test{
      final int n;
      public Test(int n){
          this.n = n
       }
}

static: 静态修饰符,共享数据,不归某对象特有,类似一群孩子都在某所学校(共享的数据),但是每个孩子名字都不一样(对象特有数据),内存中,静态是优于非静态方式的存在~
注意:被static修饰的成员可以直接使用类名直接访问(类名.静态成员变量名称|类名.静态成员方法名(参数列表))

          不能使用this/super
          静态方法只能调用静态成员变量,

TIP:定义静态常量,开发通过格式  public static final 数据类型 变量名 = 值;变量名全部大写~~对于接口,也可以接口名加静态变量名
interface jiekou {
     public static final int ZMN = 99;
}
jiekou.ZMN;

匿名对象

Person a = new Animal(); //实名对象
new Animal();//匿名对象

需要注意的:匿名对象实名的话,只能使用一次;
                    匿名对象可以当作方法接收的参数和方法的返回值;

其它:内部类(成员内部类||局部内部类||)
顾名思义,所在位置不同;(代码转)
		public class Outer {
			int i  = 1;
			class Inner {
				int i  = 2;
				public void inner(){
					int i = 3;
					System.out.println(Outer.this.i);
				}
			}
		}

		定义类
		class Party {//外部类,聚会
			public void puffBall(){// 吹气球方法
				class Ball {// 内部类,气球
					  public void puff(){
						System.out.println("气球膨胀了");
					  }
				}
				//创建内部类对象,调用puff方法
				new Ball().puff();
			}
		}
		访问内部类
		public static void main(String[] args) {	
			//创建外部类对象
			Party p = new Party();
			//调用外部类中的puffBall方法
			p.puffBall();
		}

匿名内部类(代码转)

	public interface Smoking {
		public abstract void smoking();
		}
		/*
		 *  实现类,实现接口 重写接口抽象方法,创建实现类对象
		 *  class XXX implements Smoking{
		 *      public void smoking(){
		 *      
		 *      }
		 *  }
		 *  XXX x = new XXX();
		 *  x.smoking(); 
		 *  Smoking s = new XXX();
		 *  s.smoking();
		 *  
		 *  匿名内部类,简化问题:  定义实现类,重写方法,建立实现类对象,合为一步完成
		 */

	测试类:
	public class Test {
		public static void main(String[] args) {
			//使用匿名内部类
			/*
			 *  定义实现类,重写方法,创建实现类对象,一步搞定
			 *  格式:
			 *    new 接口或者父类(){
			 *       重写抽象方法
			 *    };
			 *    从 new开始,到分号结束
			 *    创建了接口的实现类的对象
			 */
			new Smoking(){
				public void smoking(){
					System.out.println("人在吸烟");
				}
			}.smoking();
		}
	}

protected调用不同包的子类,必须在子类写。

代码块

构造代码块和静态代码块,均定义在类中方法之外。
使用格式{}    static{}      静态代码块优先执行,但是只执行一次,之后执行构造代码块,最后执行构造方法

abstract 不能与private/static/final同时使用

猜你喜欢

转载自blog.csdn.net/weixin_40211315/article/details/79625089
今日推荐