前言
本人对Java一种学习记录
1.1、继承是什么?
如果说类是对象的抽象化的话,那么继承就是对类进行抽象,如同生物中分类的科,这些类中有一些相似的属性和方法,我们完全可以抽象出一个父类(超类)。继承如现实世界的继承一样,那么子类要用extend 关键词,这样子类就可以继承父类的方法和属性(但要注意方法和属性的访问权限 超过权限就不行了 构造方法子类不能继承,但可以调用),提高代码的复用性。Java中只支持单继承,这样可以防止多继承中多个父类中方法名相同,确定调用那个父类中的方法的麻烦
1.2、例子
代码如下):
package com.yc;
public class Aminal {
public String head;
public String body;
public void eat(){
}
}
定义了一个了Aminal类
package com.yc;
public class Dog extends Aminal {
//子类的属性和方法
}
2.1、super是什么?
因为子类继承了父类(在子类实例化的时候,其父类会先一步创建)方法,所以Java提供了super关键字来调用父类的方法和属性(但只能调用直接父类 同时 还能调用父类中被子类覆盖的方法和属性),在super在构造方法要放在第一行,因为父类的构造方法要比子类的构造方法前创建
2.2简单的使用
代码如下):
package com.yc;
public class Aminal {
public String head ;
public String body ;
public void run(){
}
}
class Dog extends Aminal{
public void eat(){
System.out.println();
super.run();
System.out.println(super.head);
}
}
经过测试super的调用要在方法体类,不管是调用属性还是方法,不是构造类,用super的调用是没有限制的 super()和this.()不能同时使用(他们都不能做静态方法中)
3.1、重写是什么?
父类中的方法无法满足字类中的要求,那么我们会对这个方法进行重写,重写的方法只有两点要注意:1,重写的方法的访问修饰符的权限子类 >= 父类,private除外和因为权限原因无法继承的方法。2,方法体的不同,子类根据需求来写,同事在其他类要调用父类的这个方法依然可以通过super.方法名();来调用
3.2简单的使用
代码如下):
package com.yc;
public class Aminal {
public String head ;
public String body ;
public void eat(){
System.out.println("aa");
}
}
class Dog extends Aminal{
public void eat(){
System.out.println("bb");
}
}
方法的重写要与方法的重载区分开来;并且很好的解释出其中的不同,这个是初级程序员面试常考题
位置 | 方法名 | 参数表 | 返回值 | 访问修饰符 | |
---|---|---|---|---|---|
方法重写 | 子类 | 相同 | 相同 | 相同或是其子 | 不能比父类更严格 |
方法重载 | 同类 | 相同 | 不相同 | 无关 | 无关 |
4.1、抽象是什么?
因为一些类因为比其他类抽象一些,实例化用处不大,所以引用出抽象类(抽象类中不一定有抽象方法但抽象方法一定在抽象类中(接口是一种特殊的抽象类))
抽象类用abstract,抽象方法是没有方法体的,当一个类继承了抽象类时,我们必须实现其中的抽象方法
2.2简单的使用
代码如下):
package com.yc;
public abstract class Aminal {
public String head ;
public String body ;
public abstract void eat();
}
class Dog extends Aminal{
@Override
public void eat() {
}
}
抽象类中可以有构造方法,但不能实例化