学习大数据:Java基础篇之继承

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习大数据:Java基础篇之继承相关的知识,希望对你有一定的参考价值。

继承:extends
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
1.子类继承父类:在每个子类对象中都有一个独有的父类对象
格式:

class 父类 {
}
class 子类 extends 父类 {
}

this是当前对象,this(参数列表)在当前类写构造方法中调用其他重载构造
super是父类对象,super(参数列表)在子类构造中调用父类构造
this()或super()必须位于当前构造方法的第一句

2.继承是一种高级封装

3.不能继承父类的哪些内容:
①私有的;private
②构造方法;Constuctor
③非同包父类受保护类型 protected

4.通过访问修饰符和包进行访问权限控制

                          类内        同包子类      不同包子类     其他
     private            √                                
     default            √                 √                         
     protected        √                 √                    √               
     public              √                 √                    √                √

5.静态代码块、普通代码块、构造方法
执行顺序:
父类静态代码块->子类静态代码块->父类普通代码块->父类构造方法->子类普通代码->块子类构造方法

6.static:
①被static修饰的属性和方法称之为类属性与类方法,无需对象,通过类名就可以访问
②static违背了OOP
JVM启动时装在字节码文件过程中创建所有静态内容,当虚拟机关闭时static内容才会销毁
③何时使用:使用频次高,且当前工程中许多类需要用
④静态方法只能访问静态属性和静态方法

7.重写、重载
①重载:同一个类中名称相同参数不同的方法
②重写:子类重写父类同名、同参、同返回值的方法

 public class Base {
 //父类中的sayHello方法
         public void sayHello(){
                System.out.println("hello base");
         }
}

public class Child extends Base {
        //子类中的sayHello方法
        public void sayHello(){
               System.out.println("hello child");
         }
}
public class Test {
        public static void main(String[] args){
                Base b = new Child();
                b.sayHello();
        }

8.转型:有继承关系的对象类型转化
①自动类型转换:父类引用指向子类对象
②强制类型转换:不是将父类对象强制转换成子类对象
1)通过instanceof运算符判定父类引用指向子类对象的 实际类型
2)否则:Java.lang.ClassCastExceotion 类型转换异常

继承关键字:
继承可以使用 extends 和 implements 这两个关键字来实现继承,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。
1.extends关键字
类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。
例:

public class Animal { 
    private String name;   
    private int id; 
    public Animal(String myName, String myid) { 
        //初始化属性值
    } 
    public void eat() {  //吃东西方法的具体实现  } 
    public void sleep() { //睡觉方法的具体实现  } 
} 

public class Penguin  extends  Animal{ 
}

2.implements关键字
使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。
例:

public interface A {
    public void eat();
    public void sleep();
}

public interface B {
    public void show();
}

public class C implements A,B {
}

3.super 与 this 关键字
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
this关键字:指向自己的引用。
例:

class Animal {
  void eat() {
    System.out.println("animal : eat");
  }
}

class Dog extends Animal {
  void eat() {
    System.out.println("dog : eat");
  }
  void eatTest() {
    this.eat();       // this 调用自己的方法
    super.eat();    // super 调用父类方法
  }
}

public class Test {
  public static void main(String[] args) {
    Animal a = new Animal();
    a.eat();
    Dog d = new Dog();
    d.eatTest();
  }
}

4.final关键字
final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:
声明类:
final class 类名 {//类体}
声明方法:
修饰符(public/private/default/protected) final 返回值类型 方法名(){//方法体}

以上是关于学习大数据:Java基础篇之继承的主要内容,如果未能解决你的问题,请参考以下文章

学习大数据:Java基础篇之多态

学习大数据:Java基础篇之多态

学习大数据:Java基础篇之数组

学习大数据:Java基础篇之数组

学习大数据:Java基础篇之运算符

学习大数据:Java基础篇之运算符