黑马程序员----------基础之类、接口

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、类的初始化顺序
  一个对象在初始化时,会用到静态代码块、代码块、构造函数完成初始化。

class StartDemo{
	public static void main (String []args){
		A a = new A();
		
		System.out.println("========================");
		A a2 = new A();
		
		System.out.println("========================");
		System.out.println(B.x);	
	}
}

class A extends B {
	static int x = 1 ;
	final int y = 2 ;
	int z = 3 ;
	
	A(){
		System.out.println("我是构造函数. z="+z);	
	}
	{
		System.out.println("我是代码块.y="+y);
		this.z = 1;	
	}
	static{
		System.out.println("我是静态代码块.x="+x);	
	}	
}
abstract class B {
	static int x = 1 ;
	final int y = 2 ;
	int z = 3 ;
	
	B(){
		System.out.println("我是构造函数b.z="+z);	
		int z = 4;	
	}
	{
		System.out.println("我是代码块b.y="+y);
		this.z = 1;	
	}
	static{
		System.out.println("我是静态代码块b.x="+x);	
	}	
}
/**输出结果
我是静态代码块b.x=1
我是静态代码块.x=1
我是代码块b.y=2
我是构造函数b.z=1
我是代码块.y=2
我是构造函数. z=1
=======================
我是代码块b.y=2
我是构造函数b.z=1
我是代码块.y=2
我是构造函数. z=1
=======================
*/

  他们的初始化顺序为父类静态代码块->子类静态代码块->父类代码块->父类构造函数->子类代码块->子类构造函数,其中静态代码块只会运行一次,后面再new新的对象是不会执行的,并且静态代码块只能调用修改类里的静态成员变量。静态初始化完成后,会对象所在类的所有类成员变量、常量进行初始化。所有类成员初始化完成之后才调用本类的构造方法创建对象。
  一个类可以有多个代码块,他们按前后顺序执行。一个类内也可以有多个构造方法,不写磨人调用父类的构造方法,一个构造方法内,还可以调用其他的构造方法,但是必须写在该构造方法的第一行。
  
二、抽象类
  抽象类是指不能直接调用方法的类。抽象类相当于不同对象的共性抽取。如果一个类中有abstract方法,则这个类肯定是抽象类。。抽象类的子类如果没有实现父类的抽象方法,则也是抽象类。
  抽象类的几个注意的地方
   1.抽象类里的抽象方法不能前缀为private和final。
   2.抽象类可以继承实体类,但是该实体类不该有final构造方法。
   
   
三、接口
  接口可以看成是事物的共性方法的抽取,接口用interface修饰,使用implements来实现。
  接口的几个注意的地方
   1.接口内所有的变量都是public static final静态常量,且需要赋值。一般用全字母大写来表示。
   2.jdk8.0之前接口内的方法都是公开抽象方法,java8.0后接口内可以写default方法。
   3.接口和接口之间可以多继承。
   4.接口不可以直接创建一个对象。
   5.一个类可以实现多个接口。
  
   
四、内部类
  内部类是定义在类里的类,内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。内部类声明成静态的,就不能随便的访问外部类的成员变量,仍然是只能访问外部类的静态成员变量。
  
  内部类可以分成三种:
   1.成员内部类 
   2.局部内部类
   3.匿名内部类  匿名内部类不该有构造方法,不应该定义任何静态的方法变量。匿名内部类一般只会写1-2个方法。匿名内部类都跟在new之后,用其隐含实现一个接口或实现一个类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值