JAVA-继承

简介: JAVA-继承

继承的概念


2309168-20210809213320898-218586177.jpg

公共类(Public)下的继承


package oop.继承;
import oop.Student;
public class Application {
    public static void main(String[] args) {
        student student = new student();
        student.test("陈丹宇");
    }
}
package oop.继承;
//JAVA中,所有的类,都默认直接或者间接继承object
//person 人 : 父类
public class person {
    public String name = "chendanyu";
    public void print(){
        System.out.println("Person");
    }
}
package oop.继承;
//学生 is 人: 派生类,子类
//子类继承了父类,就会拥有父类的全部方法
public class student extends person{
    public String name = "qq";
    public void print(){
        System.out.println("Student");
    }
    public void test(String name){
        System.out.println(name);//陈丹宇
        System.out.println(this.name);//qq
        System.out.println(super.name);//chendanyu
    }
}


2309168-20210809213215654-967355502.jpg

super与this的使用区别


package oop.继承;
import oop.Student;
public class Application {
    public static void main(String[] args) {
        student student = new student();
        student.test("陈丹宇");
        student.test1();
    }
}
package oop.继承;
//学生 is 人: 派生类,子类
//子类继承了父类,就会拥有父类的全部方法
public class student extends person{
    public String name = "qq";
    public void print(){
        System.out.println("Student");
    }
    public void test(String name){
        System.out.println(name);
        System.out.println(this.name);
        System.out.println(super.name);
    }
    public void test1(){
        print();//student
        this.print();//student
        super.print();//person
    }
}
package oop.继承;
//JAVA中,所有的类,都默认直接或者间接继承object
//person 人 : 父类
public class person {
    public void say(){
        System.out.println("学生说了一句话");
    }
    public String name = "chendanyu";
    public void print(){
        System.out.println("Person");
    }
}


2309168-20210809213252425-1791399564.jpg

方法重写


package oop.方法重写;
import oop.方法重写.A;
import oop.方法重写.B;
public class Application {
    public static void main(String[] args) {
        A a = new A();
        a.test();
        //父类的应用指向了子类
        B b = new A();//子类重写了父类的方法
        b.test();
    }
}
package oop.方法重写;
public class A extends B{
    //子类继承父类方法重写的快捷键
    //Ctrl + Ins
    //Override 重写的意思
    @Override//注解:有功能的注释
    public void test() {
        super.test();
    }
    /*
    public  void test(){
        System.out.println("A-->test");
    }
     */
}
package oop.方法重写;
public class B {
    public   void test(){
        System.out.println("B-->test");
    }
}

继承与重写的小结


继承

学生 is 人: 派生类,子类

子类继承了父类,就会拥有父类的全部方法

JAVA中,所有的类,都默认直接或者间接继承object

person 人 : 父类

父类中私有的东西(private)--子类中初始无法继承

父类对子类之间存在无参构造,在子类无参调用中会默认将父类的无参构造一起调用

super注意点:

1.super调用父类的构造方法,必须在构造方法发第一个;

2.super必须只能出现在子类的方法或者构造方法中

3.super和this不能同时调用方法

Vs this:

代表对象不同:

this:本身调用者这个对象

super:代表父类对象的应用

前提:

this:没有继承也可以使用

super:只能在继承条件下才可以使用

构造方法

this(); 本类的构造

super();父类的构造

重写

重写都是方法的重写,和属性无关

重写的快捷键 ctrl+o

静态的方法和非静态的方法区别很大

静态方法: 方法的调用只和左边,定义的右边未起作用

重写:需要有继承关系,子类重写父类的方法!

1,方法名必须相同

2,参数列表列表必须相同

3,修饰符:范围可以扩大但不能缩小: public>protected>default>private

4,抛出的异常:范围,可以被缩小,但不能扩大: ClassNotFoundException-->Exceptiion(大)

重写。子类的方法和父类必须一致,方法体不同

为什么要重写

1.父类的功能,子类不一定需要,或者不一定满足

2.重写的快捷键 ctrl+o, override

相关文章
|
5月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
2月前
|
Java
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
130 1
|
3月前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
41 3
|
3月前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
70 2
|
3月前
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
45 2
|
3月前
|
Java 开发者
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
52 1
|
4月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
3月前
|
Java 测试技术 编译器
Java零基础-继承详解!
【10月更文挑战第4天】Java零基础教学篇,手把手实践教学!
52 2
|
3月前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
38 5
|
3月前
|
Java
java继承和多态详解
java继承和多态详解
55 5