JavaSE(14)-继承

继承

概念:
  • 继承就是子类继承父类,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
生活中的继承:

在这里插入图片描述

图解:

  • 奶牛和驴属于食草动物类,狮子和老虎属于食肉动物类。
  • 食草动物类和食肉动物类又属于动物类。
  • 所以继承需要符合的关系是:is-a,父类更通用,子类更具体。
继承类型:
  • 单继承
public class A{
	······
}
public class B extends A{
	······
}
  • 多重继承
public class A{
	······
}
public class B extends A{
	······
}
public class C extends B{
	······
}
  • 不同类继承同一个类
public class A{
	······
}
public class B extends A{
	······
}
public class C extends A{
	······
}
  • Java不支持多继承
继承的特性:
  • 子类拥有父类非private的属性和方法。
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
  • 子类可以用自己的方法实现父类的方法。
  • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。
不继承:

非继承代码演示:

  • Tiger类
package oop.demo04;

/**
 * @author CodePigPig
 * @date 2021/2/2 8:23 下午
 * @Email 1399203705@qq.com
 */
public class Tiger {
    private String name;
    private int age;

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

    public void eat(){
        System.out.println(name+"正在吃");
    }
    public void sleep(){
        System.out.println(name+"正在睡觉");
    }
    public void selfIntroduction(){
        System.out.println("大家好!我是"+name+",我今年"+age+"岁了");
    }
}
  • MilkCow类
package oop.demo04;

/**
 * @author CodePigPig
 * @date 2021/2/2 8:23 下午
 * @Email 1399203705@qq.com
 */
public class MilkCow {
    private String name; //姓名
    private int age; //年龄

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

    public void eat(){
        System.out.println(name+"正在吃");
    }
    public void sleep(){
        System.out.println(name+"正在睡觉");
    }
    public void selfIntroduction(){
        System.out.println("大家好!我是"+name+",我今年"+age+"岁了");
    }
}

说明:

  • 从Tiger类和MilkCow类可以看出,同样的属性和同样的方法,代码存在重复了,导致后果就是代码量大且臃肿。
  • 维护性不高,如果需要修改同样的属性和方法,需要更改多处代码,容易出错。
继承:
  • 通过将同样的属性和方法进行提取出来,设置为公共类,让子类Tiger类和MilkCow类继承父类Animal类
  • 减少了重复代码,代码更加简洁,提高代码的复用性。

继承的代码演示:

  • Animal类(公共类)
package oop.demo04;

/**
 * @author CodePigPig
 * @date 2021/2/2 8:22 下午
 * @Email 1399203705@qq.com
 */
public class Animal {
    private String name; //姓名
    private int age; //年龄

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

    public void eat(){
        System.out.println(name+"正在吃");
    }
    public void sleep(){
        System.out.println(name+"正在睡觉");
    }
    public void selfIntroduction(){
        System.out.println("大家好!我是"+name+",我今年"+age+"岁了");
    }
}
  • Tiger类
public class Tiger extends Animal{

    public Tiger(String name, int age) {
        super(name, age);
    }
}
  • MilkCow类
public class MilkCow extends Animal{

    public MilkCow(String name, int age) {
        super(name, age);
    }
}
  • Application类
package oop.demo04;

/**
 * @author CodePigPig
 * @date 2021/2/2 8:39 下午
 * @Email 1399203705@qq.com
 */
public class Application {
    public static void main(String[] args) {

        MilkCow milkCow = new MilkCow("奶小牛", 22);
        milkCow.eat();
        milkCow.sleep();
        milkCow.selfIntroduction();

        System.out.println("==============分割线=============");

        Tiger tiger = new Tiger("虎大王",3);
        tiger.eat();
        tiger.eat();
        tiger.selfIntroduction();
    }
}

输出:
奶小牛正在吃
奶小牛正在睡觉
大家好!我是奶小牛,我今年22岁了
==============分割线=============
虎大王正在吃
虎大王正在吃
大家好!我是虎大王,我今年3岁了  
继承中的关键字

概述:

  • 继承可以使用extends和implements这两个关键字来实现继承。
  • 所有类都继承于java.lang.Object,当一个类没有继承其他类时,默认继承object类(祖先类)。

关键字:

  • extend关键字
  • 类的继承时单一继承,一个子类只能拥有一个父类,所以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{ 
}
  • implements关键字
  • 使用implements关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同事继承多个接口
public interface A {
    public void eat();
    public void sleep();
}
 
public interface B {
    public void show();
}
 
public class C implements A,B {
}
  • this关键字:指向自己的引用
  • super关键字:我们可以用过super关键字来实现对父类成员的访问,用来引用当前对象的父类
package oop.demo05;

/**
 * @author CodePigPig
 * @date 2021/2/2 9:07 下午
 * @Email 1399203705@qq.com
 */

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

class Cat extends Animal{
    public void eat(){
        System.out.println("cat : eat");
    }

    public void eatTest(){
        this.eat();
        super.eat();
    }
}

public class Application {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.eat();

        Cat cat = new Cat();
        cat.eat();
        System.out.println("=========分割线=========");
        cat.eatTest();
    }
}
package oop.demo05;

/**
 * @author CodePigPig
 * @date 2021/2/2 9:07 下午
 * @Email 1399203705@qq.com
 */

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

class Cat extends Animal{
    public void eat(){
        System.out.println("cat : eat");
    }

    public void eatTest(){
        this.eat();
        super.eat();
    }
}

public class Application {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.eat();

        Cat cat = new Cat();
        cat.eat();
        System.out.println("=========分割线=========");
        cat.eatTest();
    }
}

输出:
animal : eat
cat : eat
=========分割线=========
cat : eat
animal : eat
  • final关键字
  • final关键字声明类可以把类定义为不能被继承,即最终类;或者用于修饰方法,该方法不能被子类重写。
声明类:
final class 类名{
	·····
}

声明方法:
修饰符(public/private/default/protected) final 返回值类型 方法名(){
	······
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面向对象编程是一种编程范式,它将程序的构建和设计思路以面向对象的方式进行组织和实现。在Java中,面向对象编程是基于Java SE(Standard Edition)的一种编程方式。第07讲主要介绍了面向对象编程中的一些基本概念和关键术语。 在面向对象编程中,我们将程序中的数据和对数据的操作(方法)封装在一起,形成一个对象对象由两部分构成:属性和方法。属性是用来描述对象的特征,而方法则是对象可以执行的操作。对象之间通过消息(方法调用)进行通信和交互。面向对象的核心思想是通过封装、继承多态实现程序的复用和扩展。 封装是面向对象编程中的一个重要概念,它指的是将类的属性和方法进行封装,使得外部无法直接访问和修改对象的内部状态,只能通过公共的方法来操作属性和执行方法。封装提供了一种将数据和行为组合在一起的方式,可以保护数据的完整性和安全性。 继承是面向对象编程中的另一个重要概念,它指的是通过定义一个新的类来继承现有类的属性和方法。通过继承,子类可以继承父类的属性和方法,并可以在此基础上进行扩展和修改。继承提供了一种代码复用的机制,可以减少重复编码的工作量。 多态是面向对象编程的又一个重要概念,它指的是同一类型的对象在不同的情况下可以有不同的表现形式。多态通过方法的重写和方法的重载实现。方法的重写指的是在子类中重新定义和实现父类的方法,方法的重载指的是在同一个类中可以定义多个同名但参数列表不同的方法。 总结来说,面向对象编程是一种将程序组织和设计思路以对象为中心的编程方式。在JavaSE中,我们可以通过封装、继承多态来实现面向对象编程的目标。封装可以提高程序的可维护性和可复用性,继承可以减少重复编码的工作量,多态可以灵活地操作对象。掌握这些基本概念和关键术语,可以帮助我们更好地理解和应用面向对象编程的思想。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值