Java基础知识复习笔记(二)

=====>>Java访问权限

1、Java的访问权限修饰符从最大权限到最小权限依次是:public、protected、包访问权限(没有关键词/friendly)和private。


2、如果将类的构造方式设为private,则该类外部成员都无法创建该类的对象。一般地,将构造方法设为private,该类应该提供一个用于实例化类public方法,也就是singleton(单例模式)。

如:

class Soup{
	private static Soup ps = new Soup();
	private Soup(){}
	public static Soup getSoup(){
		return ps;
	}
}

此时,该类始终都只能创建一个对象。

=====>>复用类

3、复用类,即类的继承。用extends实现类与类之间的复用;实例化子类,需要先初始化基类(父类),再初始化子类。

4、如果没有默认的基类构造器,或者想调用带参数基类构造器,就必须使用super显式地调用基类构造器语言。

5、如果Java的基类拥有某个已被多次重载的方法名称,那么子类中重新定义该方法名称并不会屏蔽其在基类的任何版本。

6、Java使用“@Override”注解时,要求基类与子类的方法名、参数、返回值等完全一样;因而“@Override”注解可以防止不想重载时而意外地进行了重载。

7、继承与组合的选择:"is-a"的关系就用继承来表达;“has-a”的关系就用组合来表达。

8、基类与子类有向上转型的功能,即可以定义基类的声明,用子类实现具体类。

9、final可以修饰数据、方法和类。

     ①final数据:一个永不改变的编译时常量,在运行时被初始化的值,其后不会被改变。

     注:对于基本类型,final使数值恒定不变;而对于对象引用,一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。然而,对象本事却是可以被修改的,数组亦然。

     ②final方法:使用final的方法的原因:第一个把方法锁定,以防任何继承类修改它的含义;第二个原因就是效率。

类中所有的private方法都隐式地指定为final方法。

     ③final类不能被子类继承。

=====>>多态

10、多态,也称作多态绑定、后期绑定或运行时绑定,就是在运行时根据对象的类型进行绑定。多态是针对于面向对象的类而言,而方法的重载是针对于过程的方法而言。

11、通过继承得到的子类只有非private方法才可以被覆盖。

12、只有普通方法调用可以是多态的,而对于静态方法不具有多态性。

13、构造器调用顺序:

①调用基类构造器

②按声明顺序调用成员的初始化方法

③调用导出类构造器主体

=====>>接口

14、包含抽象方法的类叫抽象类,在class前加abstract关键字声明为抽象类。抽象类中可以有实现的方法,也可以只有方法的声明。子类用extends继承抽象类,并且子类必须重写抽象类中的抽象方法。

15、接口使用interface来代替类的class关键字,与class有相同的权限访问修饰符。针对于接口的实现类使用implements关键字,并且类必须全部实现接口中的方法。

16、Java使用extends只能允许继承一个父类,但可以通过implements去实现多个接口;如过同时存在extends和implements时,需把extends放置implements前。

17、接口可以通过继承extends来拓展,并且extends后可以跟多个接口;接口继承接口时,无须再写继承接口的方法,但某实现该接口时,则需要全部实现这些方法。

18、Java不支持extends的多重类继承,主要是避免多重继承的菱形继承问题;另一个原因也是因为Java多重继承很少使用。

19、在实际开发中,建议多使用针对接口编程。

=====>>内部类

class Parcel{
	class Contents{
		private int i = 11;
		public int value(){return i;}
	}
}

20、所有内部类自动拥有对其外围类所有成员的访问权。

21、内部类属于外围类的对象,而静态内部类(嵌套类)属于外部类。

22、内部类.this与.new的使用

Parcel parcel = new Parcel();
//内部类实例化
Parcel.Contents contents = parcel.new Contents();

23、使用内部类的两个理由:

①内部类实现接口,就可以不用外围类是实现接口;

②解决一个复杂的问题,想创建一个类来辅助你的解决方案,但是又不希望这个类是公共可用的。

24、内部类有以下几种:

①局部内部类:定义在方法中的类;

②匿名内部类:内部类没有类名;

public class Parcel{
	public Contents contents(){
		return new Contents(){
			private int i=11;
			public int value(){return i;}
		}
	}
}

③嵌套类:不需要内部类对象与其外围类对象之间有联系,将内部类声明为static。普通的内部类不能有static数据和static字段,也不能包含嵌套类,但嵌套类可以包含。

public class Parcel{
	public static class contents(){		
		private int i=11;
		public int value(){return i;}	
	}
}
25、内部类标识符:生成的.class文件,名称为:外围类名$内部类名。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章