学习java第二天 static final 抽象 内部类

1.static 

        static方法会在内存的方法区加载一次。显式赋值会覆盖掉原来的默认赋值,堆中new的对象静态方法指针地址都指向一个静态方法。

        static和类是同时加载进内存的,可以通过类名.方法直接调用静态方法。

        外部类new一个含静态方法的对象时,静态代码块已经被执行,然后有匿名代码块的话,先执行匿名代码块,最后执行构造代码块。

      顺序为静态代码块、匿名代码块、构造代码块。

 2.final 

       final修饰的成员变量只能被赋值一次。但是它没有初始化的值,所以在引用时必须初始化赋一个值。

//a必须赋值
private final int=a;
{
 a=1;
 }
public 类名(){
     a=1;
} 

3.抽象 abstract

        只有声明,没有实现。表达的是like a的关系,子类完成父类方法的实现。子类like a父类。

        抽象类的作用就是为了给子类继承的,子类可以去实现父类的方法。父类抽象类中是默认有一个无参构造器的。子类继承的时候也引用了父类的无参构造器。

        子类完成父类方法的同时也可以添加自己个性的方法。

4.接口 interface 类,implements实现接口

    抽象类中的常量都是static final修饰的,方法可以是抽象方法,也(JDK8)可以不是抽象方法。常量一般都是大写。

5.内部类 

    成员内部类: 直接定义在类的内部。不能定义静态属性和方法。内部类方法访问外部类变量的方法和属性: OutClass.this.方法或者属性。外部类访问内部类方法和属性:对象.方法或属性。不同类访问内部类需要new一个外部类对象然后:不同类对象.外部类对象.内部类对象.方法或属性。

    静态内部类:静态内部类只能访问外部类的静态方法。内部类中的静态和非静态是可以访问到的。访问外部类静态格式 Outclass.方法。

    匿名内部类:

public class Test {
  public static void main(String[] args) {
	new Run() {
		@Override
		public void Lay() {
			System.out.println("匿名内部类");
		}
	 }.Lay();
}
}
abstract class Run{
	public void Lay() {		
		System.out.println("匿名");
	}	
}
1.考虑这个内部类,如果需要反复的进行多次使用(必须有名字)
       在这个内部类中,如果需要定义静态的属性和方法,选择使用 静态内部类
       在这个内部类中,如果需要访问外部类的非静态属性和方法,选择使用 成员内部类
2. 考虑这个内部类,如果只需要使用一次(可以没有名字)
       选择使用 匿名内部类

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值