Java知识03

java简介:
#代码块
代码块一共分4种:普通代码块,构造块,静态块和同步块;

(1)普通代码块
什么叫全局变量?什么叫局部变量?
全局变量和局部变量是针对定义代码块的情况而定的,只是一种相对性的概念。第一个变量x定义在if语句之中,第二个变量x在if语句之外,第一个变量x相对第二个变量x就是局部变量,第二个变量x相对第一个变量x就是全局变量。
普通代码块就是把代码块中的if取消。

(2)构造块
普通代码块定义在方法中,而构造块是定义在类中。
构造块优先于构造方法执行,而且每当一个新的实例化对象产生,就会重复执行构造块的程序。

(3)静态块
静态块也定义在类中,就是在一个构造块前面使用static来定义。
第一种情况:在非主类中定义的静态块;

class Person{
	public Person(){System.out.println("构造方法。");}
	{System.out.println("构造块。");}
	static{System.out.println("静态块。");}
}
public class TestDemo{
	public static void main(String[] args) {new Person();new Person();new Person();}
}

静态块优先于构造方法执行,而且不管有多少个实例化对象产生,静态块只会执行一次。它的作用主要为类中的static属性初始化。
第二种情况:在主类中定义的静态块;

public class TestDemo{
	static{System.out.println("静态块。");}
	public static void main(String[] args) {System.out.println("主方法。");}
}

在主类中定义的静态块的执行优先于主方法执行。
JDK1.7之前,Java存在一个bug就是可以用静态块代替主方法,代码如下,

public class TestStatic {
	static{System.out.println("静态块。");System.exit(1);}
}

(4)同步块

#继承(指类的继承)
Java继承格式:
子类extends父类。子类(又被称为派生类),父类(基类,超类【super class】)。

Java继承特点:
解决代码重用的问题,在已有类的基础上扩展类的功能。(继承性,扩充一个类已有的功能。)

Java继承限制:
限制一:一个类只能继承一个父类,只支持单继承,可以多层继承,不允许多重继承。(例如:多层继承,B继承A,C继承B)

限制二:在一个子类继承时候,实际上会继承父类中的所有操作(属性和方法),但是需要注意的是,对于所有的非私有的操作属于显式继承(使用对象操作),而所有的私有操作属于隐式继承(使用setter和getter方法间接完成)。

限制三:在继承关系中,如果要实例化子类对象,会默认先调用父类的构造方法,为父类的属性初始化,之后再调用子类的构造方法,即默认情况下,子类会先找父类的无参构造方法。(对于子类的构造而言,就相当于隐藏了一个super())
在默认情况下,子类调用父类的无参构造方法,而如果这个时候父类没有无参构造方法,则子类必须通过super()调用指定参数的构造方法。
在任何情况下,子类对象的实例化操作都会调用父类的构造方法。既然super()可以调用父类的构造,那么这个和this()很相似,super调用父类构造时候,一定要放在构造方法首行上,所以得出结论:this和super调用构造方法时候不能同时出现,两者是二先一关系。

#覆写(指方法覆写)
覆写是什么?
子类定义了和父类在方法名称、返回值类型、参数类型及个数完全相同时,称为方法的覆写。

覆写为什么要使用?
重写是为了体现JAVA的多态性,当你现在已有的方法已经被系统中的多处引用到了,突然你的客户的需求发生了很大的改变时,你只需要子类重写这个方法,然后用子类去实现就行了。(重写是为了增强类的重用性和复用性,即扩展性。)

覆写注意点有哪些?
在方法覆写时,被子类所覆写的方法不能拥有比父类更严格的访问控制权(private<default(不写)<public)。
当一个子类覆写一个父类的方法时,子类要想调用父类的被覆写过的方法,要在方法前加上“super”;
如果父类的方法名为private,则子类无法覆写,也不会这样去编写代码。虽然满足方法覆写的概念,父类权限为private,子类为public的确扩大的权限,而且方法的参数类型和个数、返回值也都一样,但开发中绝对不会出现的。

this.方法():先从本类查找是否存在指定的方法,如果没有找到,则调用父类操作。
super.方法():直接由子类调用父类的指定方法,不再找子类。

在开发中,记住一个原则,定义方法操作时,大多数情况下的权限都是public。
在开发中,类的属性一定要封装。

方法的重载和覆写的区别?
在这里插入图片描述
this和super的区别?
在这里插入图片描述
当方法重载时,能否改变其返回值类型?
方法重载时可以改变返回值类型,一般设计时不这样做,即方法返回值参数尽量统一。

构造方法是否可以被覆写?
构造方法不能被继承,因此不能覆写,但可以被重载。

访问权限:
1、public: 所修饰的类、变量、方法,在内外包均具有访问权限;
2、protected: 这种权限是为继承而设计的,protected所修饰的成员,对所有子类是可访问的,但只对同包的类是可访问的,对外包的非子类是不可以访问;
3、包访问权限(default): 只对同包的类具有访问的权限,外包的所有类都不能访问;
4、private: 私有的权限,只对本类的方法可以使用;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值