学习大数据: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基础篇之继承的主要内容,如果未能解决你的问题,请参考以下文章