通过构造方法来构建成自己的一个新对象
是java中用来初始化对象的函数
与类同名,且没有返回值
如果不写,会调用系统默认构造函数
一旦写了,就会将默认的覆盖,只能用自己写的构造函数 。 构造函数的好处:将内容传递给堆内存后,在栈内存中消失,再实例化的时候,还是会调用这个构造函数的 在java中,继承中的构造函数也是有规则
子类构造必须调用父类的构造函数,通过在自己的构造方法中声明super来调用父类的构造函数,必须写在子类所有构造方法之前
子类可以使用this关键字调用本类外的构造方法
子类中没有出现父类的构造方法,会默认调用父类无参的构造方法
整个过程是内存复制来复制去的过程,还是要弄懂它的内存解析过程
问题:C#中的继承和java的继承区别? 答: C#中有将到关于继承的东西,尤其在大话设计模式中,体现得很多很深。但当时更多的注重怎么用继承来实现功能。 但java中的继承,更多的是从内存解析的角度来看,父子类的成员变量分配。 问题:this如何处理成员变量和参数重名问题? 答: 比如说一个类它的属性(静态或动态)名称和参数的名称一致,在调用的时候,就不知道用的是参数还是类的成员变量,所以用this关键字,就可以区分它到底是参数还是成员变量,因为成员变量可以通过this.点出来,而参数是不可以的,这样的话,它们之间进行传值,就会区分不开,不会混淆了。 问题:包装类 类似于C#中的? 答: 在C#中,不记得有包装类这个东西 而在java中却强调了这个包装类,在java中只有4中8类基础类型会被分配在栈内存上,其余都会被分配到堆内存上 若想要基础类型分配到堆内存上,可以用基础类型的包装类实现。 问题:4种类的访问权限? 答:也叫四种权限修饰符 public protected private 置于类的成员定义前,用来限定其他对象对这个类的访问 public default 用来修饰class类
public都可以访问这个类default 只有同一个包内部的类才可以访问这个类 问题:instanceof? 答: 判断一个类是不是另一个类的子类,返回值是布尔值 问题:为什么要定义一个接口? 答: java不支持多重继承,但现实世界又存在多重继承的现象,所以通过接口实现多重继承 多个无关的类可以实现同一接口,同样的,一个类一个实现多个接口,这样的话,实现多个接口就相当于实现多个继承 接口相当于一个抽象类,这个类可以被多个类实现(继承),从而解决了java中无法实现多重继承的问题 接口中的抽象属性只能是static final的,而抽象方法只能是public的 这样,把一个类当做不同的对象,接口使得类暴露了部分方法 帮助完成多重继承的逻辑,并和实现它的类之间实现多态性 问题:extends? 答: 继承的关键词 问题:java里关于异常的部分,真的很多,很充分? 答: 异常是什么?是程序运行期间出现的问题 出现了错误,java怎么处理? 在运行过程中,发生什么异常,java会生成一个什么样的异常类对象,生成以后,就直接抛给java运行时系统,默认的处理是将异常类中包装的信息直接打印出到命令行,控制台上;你要想处理这种异常,只要逮住这种异常就可以了,也可以在抛给运行时系统之前,先逮住,做出相应得处理 必须有try,否则不能出现catchThrowable: 所有异常类的基类Error:系统的错误,虚拟机的错误,你的程序处理不了的错误Exception:可以处理的错误,RuntimeException:经常出现的异常,这种错误,可以catch,也可以不catch 关于多层catch的捕获机制也有处理办法,一层层的往外跳转 而且必须先抛出小异常,再抛出大异常,否则编译报错 也可以自定义异常类 问题:基类的异常捕获机制,不能放在子类的异常捕获机制上面? 答: 必须先抛出小异常,再抛出大异常,否则编译报错