学习复盘
·继承
·抽象
·基本API
1.继承
Java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起继承关系。
eg. public class student extends Person {}
Student称为子类(派生类),Person称为父类(基类或超类)。
使用其他类的规则 使用其他类时,需要使用全类名。
使用同一个包中的类时,不需要导包。使用java.lang包中的类时,不需要导包。 其他情况都需要导包 如果同时使用两个包中的同名类,需要用全类名。
2.抽象
接口
接口和类之间的关系
类和类的关系 继承关系,只能单继承,不能多继承,但是可以多层继承
类和接口的关系 实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
接口和接口的关系 继承关系,可以单继承,也可以多继承
3.基本API
static的注意事项
●静态方法只能访问静态变量和静态方法
●非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法
●静态方法中是没有this关键字 总结:
静态方法中,只能访问静态。 非静态方法可以访问所有。
静态方法中没有this关键字
前几天很忙,为了赶进度疯狂二倍速和看书,很少敲代码练习,感觉知识进入了我的脑袋里还没停留就流出来了。考核完人麻了,感觉学了个寂寞 。
接下来是查漏补缺(简直是破破烂烂)
1.关于字符
char 占用字节数 默认数值 取值范围
2 '\u0000' '\u0000' - '\uffff'
2.关于抽象
●抽象类是需要被继承的,所以不能用final修饰。
当一种方法声明为抽象方法时,意味着这种方法必须被子类方法所覆盖,子类仍然是抽象的。
● 抽象方法声明中修饰符static和abstract不能同时使用。
● abstract 不能与 ptivate static final 或native 并列修饰同一个方法
●对抽象方法,若方法名前即使省略修饰符,系统仍然默认为 public abstract
3.关于接口
●接口与一般的类一样,本身也具有成员变量与成员方法,但成员变量必须是静态常量且一定要赋初值,且此值不能再被修改,若省略成员变量的修饰符,系统默认为 public staticfinal
●接口中的静态方法是用 public static 修饰的,而默认方法是用 public default 修饰的;私有方法是用private 修饰的。
● 新接口继承所有父接口中的常量,抽象方法,和默认方法,但不能继承父接口中的静态方法,也不能被实现类所继承。
●接口中定义的抽象方法不管是否用 public abstract进行修饰,其默认总是使用public abstract来修饰,即接口中的抽象方法不能有方法的实现,即不能有方法体,而接口中的私有方法,默认方法和静态方法都必须有方法的实现,必须要定义方法体。
4.关于静态方法
●用static 修饰符修饰的方法属于类的静态方法,又称为类方法。静态方法的实质是属于整个类的方法,而不加 static修饰符的方法是属于某个具体对象的方法。
● static 方法只能访问 static成员变量或调用 static 成员方法。或者说在静态方法中不能直接访问实例变量与实例方法。静态方法中虽不能直接访问非静态的成员,但可以通过创建对象的方法间接地访问非静态成员。
●在静态方法中不能使用this或super。因为this是代表调用该方法的对象,但现在“静态方法”既然不需要对象来调用, this也自然不应存在于“静态方法”内部。
5.关于方法的重写与重载
重载(overloading)
是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。
重写
1.定义
在子类中可以根据需要对从父类中继承来的方法进行改造,也称为方法的重置、覆盖。在程序执行时,子类的方法将覆盖父类的方法。
2.方法重写的要求
●子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表
●子类重写的方法的返回值类型不能大于父类被重写的方法的返回值类型
●子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限
●子类不能重写父类中声明为private权限的方法
●子类方法抛出的异常不能大于父类被重写方法的异常
重写与重载的区别
方法的重载:在同一个类中,方法名相同,方法参数类型和个数不同
方法的重写:在不同类中,方法参数列表,方法名相同,返回值类型子类小于等于父类
6.关于this关键字和super关键字
this关键字主要有三个应用:
1.this调用本类中的属性,也就是类中的成员变量;
大部分时候,普通方法访问其他方法、成员变量时无须使用 this 前缀,但如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用 this 前缀。
当一个类的属性(成员变量)名与访问该属性的方法参数名相同时,则需要使用 this 关键字来访问类中的属性,以区分类的属性和方法中的参数。
2.this调用本类中的其他方法;
this 可以代表任何对象,当 this 出现在某个方法体中时,它所代表的对象是不确定的,但它的类型是确定的,它所代表的只能是当前类的实例。只有当这个方法被调用时,它所代表的对象才被确定下来,谁在调用这个方法,this 就代表谁。
注意:对于 static 修饰的方法而言,可以使用类来直接调用该方法,如果在 static 修饰的方法中使用 this 关键字,则这个关键字就无法指向合适的对象。所以,static 修饰的方法中不能使用 this 引用。并且 Java 语法规定,静态成员不能直接访问非静态成员。
3.this调用本类中的其他构造方法,
调用时要放在构造方法的首行。this( ) 不能在普通方法中使用,只能写在构造方法中。在构造方法中使用时,必须是第一条语句。
this和super的区别
1 .this和super一样,都是对象内部的引用变量,只能出现在对象内部;
2、this指向当前对象自己,super指向当前对象的父类型特征
3、this()和super()都只能出现在构造方法的第一行,故this()和super()方法不能共存,当一个类的构造方法第一行中没有this(),也没有super(),系统默认有super()方法;
4、this()是构造方法中调用本类其他的构造方法,super()是当前对象构造方法中去调用自己父类的构造方法。
this:表示对当前对象的引用,可用于区分成员变量和局部变量,
可用来调用当前对象其他构造函数
super:表示对父类对象的引用,可用于访问父类的成员变量和方法
调用父类的构造方法
7.简述JDK,JRE,JVM 作用及三者关系。
JDK(Java Development Kit)
是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。
Java Runtime Environment(JRE)
是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
JVM
是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。