IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> JAVA面向对象(继承、Super关键字、方法重写 、抽象类、抽象方法) -> 正文阅读

[开发工具]JAVA面向对象(继承、Super关键字、方法重写 、抽象类、抽象方法)

java——继承

类是对象的抽象,继承是对某一批类的抽象,从而实现对现实世界会更好的建模
提高代码的复用性
继承关键字——extends.子类是父类的扩展
如果定义一个类没有使用extends来继承,他们都会去继承他们的父类java.util.object
直接上代码演示:
先创建父类的东西,即子类共有的属性和方法
在这里我写的是动物是父类
子类不能继承父类的所有资源:
不能访问私有属性
子类与父类不在同一个包下
构造方法

Super关键字的概述很应用

super关键字:super关键字是父类对象的引用。
super关键字的用途;
1.可以在子类中调用父类在子类中覆盖的方法,super.父类方法名
2.在调用父类方法的时候,一定要位于第一行。
3.在构造方法中super关键字和this关键字不能同时出现
4.父类中的私有属性和方法不能被调用
总结:
在创建对象时,父类会优先与子类。

super关键字的示例代码

package Extend;

/**
 * @Auther:Yuhai
 * @Date:2022/3/27-03-27-21:46
 * @Description:IntelliJ IDEA
 * @version:1.0
 */
 /**
 使用super关键字来调用方法
 */
 //测试类
public class SuperDemo {
    public static void main(String[] args) {
        new ChildClass().f();
    }
}

//父类
class   FatherClass{
    public int value;
    public void f(){
        value = 100;
        System.out.println("FatherClass.value"+value);
    }
}
//子类继承父类
class ChildClass extends FatherClass{
    public int value;
    public void f(){
    //利用super关键字来调用父类
        super.f();
        value = 200;
        System.out.println("ChildClass.value"+value);
        System.out.println(value);
        System.out.println(super.value);
    }
}
package Extend;

/**
 * @Auther:Yuhai
 * @Date:2022/3/27-03-27-13:55
 * @Description:IntelliJ IDEA
 * @version:1.0
 */

/***
 * 提取共有的属性
 *创建父类,供子类使用。
 */
public class Pet {
    private String name;
    private int age;
    private String gender;

    public Pet(){

    }

    public Pet(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}

创建子类的代码,来继承父类的属性和方法

package Extend;

/**
 * @Auther:Yuhai
 * @Date:2022/3/27-03-27-13:39
 * @Description:IntelliJ IDEA
 * @version:1.0
 */
//子类继承父类,用extends来继承
public class Dog extends Pet{
//    private String name;
//    private int age;
//    private String gender;
   private String sound;

    public Dog(){

    }

    public Dog(String name, int age, String gender, String sound) {
        //调用父类可以用super来调用。
        super(name,age,gender);
        this.sound =sound;

}
    public String getSound() {
        return sound;
    }

    public void setSound(String sound) {
        this.sound = sound;
    }
    public void show(){
        System.out.println("name:"+getName()+"age:"+this.getAge()+"gender:"+this.getGender()+"sound:"+getSound());
    }
}

package Extend;

/**
 * @Auther:Yuhai
 * @Date:2022/3/27-03-27-13:43
 * @Description:IntelliJ IDEA
 * @version:1.0
 */
public class Penguin extends Pet{
//    private String name;
//    private int age ;
//    private String gender;
    private String color;

    public Penguin(){

    }

    public Penguin(String name, int age, String gender, String color) {
        super(name,age,gender);

        this.color = color;
    }



    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
    public  void show(){
        System.out.println("name:"+getName()+"age:"+this.getAge()+"gender:"+this.getGender()+"color:"+getColor());
    }
}

创建测试类进行测试

package Extend;

/**
 * @Auther:Yuhai
 * @Date:2022/3/27-03-27-13:46
 * @Description:IntelliJ IDEA
 * @version:1.0
 */
public class PetTest {
    public static void main(String[] args) {
        Dog dog= new Dog();
        dog.setName("小黑");
        dog.setAge(6);
        dog.setGender("雄性");
        dog.setSound("汪汪汪~");
        dog.show();

        Penguin penguin = new Penguin();
        penguin.setName("花花");
        penguin.setAge(4);
        penguin.setColor("蓝色");
        penguin.setGender("雌性");
        penguin.show();
    }
}

多重继承关系的初始化顺序:

父类属性、父类的构造方法、子类属性、子类构造方法

方法重写------@Override

当父类中的方法无法满足子类的需求时可以用方法重写。
重写方法和被重写方法具有相同的参数列表、方法名称、
重写方法不能比被重写方法的的访问修饰更严格
父类public 子类只能使用public
父类protected 子类使用public protected
父类default子类使用public protected default
父类的静态方法子类可以进行调用,但是不能重写
toString重写是为了方便以后的调用

抽象类和抽象方法

抽象类:abstract,限制实例化
抽象方法:abstract也可以用于方法-----抽象方法,
抽象方法没有方法体,抽象方法必须在抽象类,
抽象方法必须在子类中被实现,除非子类就是抽象类

创建抽象类

package Extend.home;

/**
 * @Auther:Yuhai
 * @Date:2022/3/28-03-28-15:23
 * @Description:IntelliJ IDEA
 * @version:1.0
 */
public abstract class Pet {
    private String name;
    private int age;
    public Pet(){

    }

    public Pet(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public abstract void print();
}


创建普通类来继承抽象类

package Extend.home;

/**
 * @Auther:Yuhai
 * @Date:2022/3/28-03-28-15:25
 * @Description:IntelliJ IDEA
 * @version:1.0
 */
public class Dog extends Pet {

    private String gender;
    //重写
    @Override
    public void print() {
        System.out.println("name:"+super.getName()+"age:"+super.getAge()+"gender"+this.gender);
    }
    public Dog(){

    }
    public Dog(String name,int age,String gender){
        super(name,age);
        this.gender = gender;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}

创建测试类

package Extend.home;

/**
 * @Auther:Yuhai
 * @Date:2022/3/28-03-28-15:39
 * @Description:IntelliJ IDEA
 * @version:1.0
 */
public class PetTest {
    public static void main(String[] args) {

        Dog dog = new Dog("小黑",8,"雄性");
        dog.print();
    }
}
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:46:03  更:2022-03-30 18:46:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:22:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码