Scanner
next() 会自动去掉空格 nextLine 会保留空格,当按enter键后直接输出所有内容 scanner.hasNextXXX() 判断输入格式 StringTokenizer 可以得到控制台空格的数据
异常处理
finally不一定被执行,,例如 catch 块中有退出系统的语句 System.exit(-1); finally就不会被执行
面向对象
继承
子类继承父类
父类所有属性被子类沿用,同时子类又有区别于父类的独有属性。(private中的属性不能被子类继承)
单继承,多重继承,不同类能继承同一类
构造方法(带有参数的构造方法) 类 对象 创建对象(声明,实例化,初始化) 构造器
super 与 this 关键字
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
this关键字:指向自己的引用。
final关键字
final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:
####构造器结合super this使用
package js_ecu_app; /** * @author Liyongzhe * @date 2021/3/31_14:39 */ public class SuperAndThis { //父类 static class SuperClass{ private int n; //无参构造器 SuperClass(){ System.out.println("SuperClass()"); } //有参构造器 SuperClass(int n){ System.out.println("SuperClass(int n)"); this.n = n; } } //子类继承 static class SubClass extends SuperClass{ private int n; //子类无参构造 SubClass(){ System.out.println("SubClass()"); } //子类有参构造 SubClass(int n){ super(300); System.out.println("SubClass(int n)"+n); this.n = n; } } //子类继承 static class SubClass2 extends SuperClass{ private int n; //子类无参构造 SubClass2(){ System.out.println("SubClass()"); } //子类有参构造 SubClass2(int n){ super(300); System.out.println("SubClass(int n)"+n); this.n = n; } } public static void main(String[] args) { System.out.println("------SubClass 类继承------"); SubClass sc1 = new SubClass(); SubClass sc2 = new SubClass(100); System.out.println("------SubClass2 类继承------"); SubClass2 sc3 = new SubClass2(); SubClass2 sc4 = new SubClass2(200); } } 运行之后输出结果 ------SubClass 类继承------ SuperClass() SubClass() SuperClass(int n) SubClass(int n)100 ------SubClass2 类继承------ SuperClass() SubClass() SuperClass(int n)
结论
当子类创建对象时会先调用父类的无参构造方法,再调用自己的无参构造方法。携带参数是创建也是一样的。
重写
子类重写父类中允许访问有的方法,目的是定义自己特有的行为属性;
重载
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。