重生之我在地球Online当程序员8

继承&多态&接口&抽象

一、继承

继承:子承父业

子类 继承 父类的财产!

继承使用:extends关键字来实现!

继承的作用:通过父类封装代码,子类通过继承之后,就可以不用编写 重复代码

提高代码的复用性

class Animal{}
class Person extends Animal{}
class Pig extends Animal{}
class Dog extends Animal{}
class Cat extends Animal{}
----------------------------
class Flower{}
class Rose extends Flower{}
class JuHua extends Flower{}
class SunFlower extends Flower{}

继承:一定要满足 is - a 是一种;不能胡乱的继承!


Java是一种单继承语言,每个类最多只能拥有一个父类!

image-20240517104517668

二、重写

比如:toString()

//@Override 表示:下面的方法,重写了它父亲的方法
@Override 
public String toString() {
    return "Person{" +
        "id=" + id +
        ", name='" + name + '\'' +
        '}';
}

重写,一定要发生在继承之间! 快捷健:Alt + Insert


三、多态

多态:相同的行为,不同的实现

具体的做法:父类的引用 -> 子类的实现 ,接口的引用 - > 实现类的实现

image-20240517111343940

编程时:调用方法时,看左边的类,是否有定义方法或属性!

运行时:调用方法时,看右边的对象,是否有定义方法或属性!

四、抽象类

抽象类:一个具有抽象方法的类!

抽象方法:没有方法体的方法,换个说法,没有办法实现的方法!

抽象类的特点:

1、抽象方法所在的类,是抽象类;抽象类中,不一定有抽象方法!

2、抽象类,不能被实例化

3、抽象类除了可以放置抽象方法,以前的属性,普通方法,构造器仍旧可以存在

4、类如果不想实现抽象类中的方法,唯一的办法:把自己变成抽象类

五、接口

接口:USB,Type-C , 网线

作用:扩展功能

接口,是一种特殊的类,它不是通过class来定义,它通过interface来定义!

这种特殊的类,可以给我们的程序,扩展新的功能!

public interface Smokeable {
    void smoke();
}
public interface Flyable {
    // public abstract 可以省略
   void fly();
}
public interface Swimable {
    void swim();
}
public class Human implements Flyable,Smokeable,Swimable {
    //接口可以多实现
}
public class ChineseHuman extends Human{
}

接口可以多实现,也可以多继承!

public static void main(String[] args) {
    //多态:相同的行为,不同的实现
    //实现方式:父类的引用 -> 子类的实例,接口的引用 -> 实现类的实例
    Mergeable human = new Human();
    human.swim();
}
public class MainEnter {
    public static void main(String[] args) {
        //接口的引用 -> 实现类的实例
       List<String> list = new ArrayList<>();
    }
}

总结:

1、接口的作用:给程序扩展新的功能

2、接口&类之间是 一种实现关系,而且一个类 可以同时实现多个接口!

3、接口&接口之间是 一种继承关系,而且一个接口 可以通过继承多个接口!

接口:在JDK1.7时,只能放置抽象方法!

六、重载

重写:子类 重新编写 父类的方法!

重载:发生在同一类中,相同的方法名,不同的参数列表!

public class MathUtil{
    public static int add(int a,int b){
        return a + b;
    }
    public static double add(double a,int b){
        return  a + b;
    }
    public static double add(int a,double b){
        return a + b;
    }
    public static double add(double a,double b){
        return a + b;
    }
}

image-20240517162431476

七、三目运算符

格式:数据类型 变量 = (布尔条件) ? 返回满足条件的值 : 返回不满足条件的值;

替代:简单的 if -else

//三目运算符     三元运算符
String str = (i == 0) ? "女" : "男";
boolean flag = (条件) ? true : false;
double dou = (条件) ? 第1个double值 : 例外一个double值;

小案例:

public class MainEnter {
    public static void main(String[] args) {
        System.out.println("输入第1个数");
        int i = new Scanner(System.in).nextInt();
        System.out.println("输入第2个数");
        int j = new Scanner(System.in).nextInt();
        //问:i > j 吗? 大,就返回i,否则就返回j;
        int a = (i > j) ? i : j;
        System.out.println(a);
    }
}
总结

1、继承:子承父业,作用:解决重复代码的问题

2、Java中的继承是属于单继承,使用extends来进行继承!

3、父类中的方法,不满足当前的需求,可以进行重新编写,也就是 重写

4、多态:相同的行为,不同的实现;具体方式:父类的引用 -> 子类的实例;接口的引用 -> 实现类的实例;

5、抽象类:一个具有抽象方法的类;但是:抽象类不一定具有抽象方法!

6、抽象类除了可以写抽象方法之外,还可以编写:属性,普通方法,构造器

7、接口的作用:扩展/丰富 程序的类结构!接口既可以多继承,也可以多实现!

8、接口使用interface定义,使用implements 来进行实现!

9、重载:同一个类中,相同的方法名,不同的参数列表

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值