关键字总结

1、访问限定符
 修饰:修饰类、属性、方法、构造方法
 限定的范围:项目、包、类
 包括:  public  同一个项目
  protected 同一个包、(相同包或不同包)子类
  默认的  同一个包
  private  同一个类
 注意点:private 修饰类时,只能在内部嵌套使用
  在子类中方法被重写时,不可减小访问限定符

2、this
 作用:  表示当前正在被操作(调用)的对象
     在构造方法中调用本类的某一个构造方法
 注意点:在构造方法中调用构造方法,必须在第一行

3、super
 作用: 本类的父类对象(常用在在子类中调用父类方法时)
    在子类的构造方法中调用父类的构造方法
 注意点:在构造方法中调用构造方法,必须在第一行

4、this与super的区别:
 (1)属性:访问本类中的属性,本类没有则从父类中访问;直接访问父类中的属性
 (2)方法:访问本类中的方法,本类没有则从父类中访问;直接访问父类中的方法
 (3)构造:调用本类的构造方法,必须放在构造方法的首行;调用父类的构造方法,必须放在子类构造方法的首行;
 (4)特殊:表示当前对象;表示本类的父类对象

5、final
 使用final声明 :类---不能有子类,不能被继承
                        方法----不能在子类中被重写
                        属性----变量变为常量,不能被修改
     注意点:常量只能被赋值一次
                 全局常量:static final声明的变量

6、static
 (1)程序运行过程:
  装载类:static声明的属性、代码块执行(static声明的方法在被调用时执行)
  创建对象:非静态属性、代码块执行
 (2)声明属性: 全局属性,一个属性可以被对象所公用
             修改一个对象的属性,其他对象的属性全部改变
             对象.属性  相当于   类.属性
 (3)声明方法: 只与对象的类型有关
             没有static声明的方法:先看其类中是否有对应的方法,再看对象:new 类 ();这个类
 (4)声明类:   可声明内部类,然后用外部类.内部类的形式使用
          注意点:static属性、代码块在对象没有实例化时就可以调用和执行了
     static代码块:在装载时初始化数据
       非静态代码块:在对象实例化时初始化数据(不常用)

7、代码块(补充)
 {}的部分
 包括: 普通代码块:直接定义在方法中的代码
  构造块:将代码块定义在类中
   构造块优先于构造方法执行
   只要实例化对象产生,就执行构造块
  静态代码块:直接使用static声明的代码块
       不论实例化多少次对象,只执行一次
         为静态属性初始化
  同步代码块
 优先顺序:在主方法所在类中定义的静态代码块——主方法——
    ——普通类中的静态代码块——构造块——构造方法

8、ABC练习的总结与扩展

public class A {
	public A(){
		System.out.println("A");
	}
}
public class B extends A{
	public B(){
		System.out.println("B");
	}
}
public class C {
	public static A a = new A();
	public B b = new B();
	public C(){
		System.out.println("C");
	}
	public static void main(String[] args) {
		C.change();
	}
	public static void change(){
		B b1 = new B();
	}	
}

 运行结果: A

                    A

                    B


 

public class A {
	public A(){
		System.out.println("A");
	}
}
public class B extends A{
	public B(){
		System.out.println("B");
	}
}
public class C {
	public static A a = new A();
	public B b = new B();
	public C(){
		System.out.println("C");
	}
	public static void main(String[] args) {
		
		C c=new C();
		c.change();
	}
	public  void change(){
		B b1 = new B();
	}
}  

 

运行结果:

 A
  A
  B
  C
  A
  B

public class A {
	public A(){
		System.out.println("A");
	}
	{
		System.out.println("1");
	}
	static{
		System.out.println("2");
	}	
}
public class B extends A{
	public B(){
		System.out.println("B");
	}
}
public class C {
	static{
		System.out.println("3");
	}	
	{
		System.out.println("4");
	}
	public static A a = new A();
	public B b = new B();
	public C(){
		System.out.println("C");
	}
	public static void main(String[] args) {	
		C c=new C();
		c.change();	
	}
	public  void change(){
		B b1 = new B();
	}	
}

 

运行结果:

3
 2
 1
 A
 4
 1
 A
 B
 C
 1
 A
 B

练习的总结:

优先顺序:在主方法所在类中定义的静态代码块——静态属性——主方法——实例化对象
   ——普通属性——普通构造块——构造方法——所调用的方法
     普通类中的静态代码块——构造块——构造方法
     static属性和代码块,在装载类时已然可以实现;
     普通的属性的代码块则需要在实例化对象是才可以实现;
     static代码块只会执行一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值