欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(1.13)java基础语法自述--接口与继承(接口,对象转型,重写)

程序员文章站 2022-05-21 21:04:50
...

(1.13)java基础语法自述–接口与继承(接口,对象转型,重写)

一,接口

  • 接口就像是一种约定,约定某些类是特殊类,他们就可以进行一些特殊的方法
  1. “读书”接口

    • 创建一个接口,Book,再申明一个方法reading,但是没有方法体,是一个“空” 方法。
    • 再设计一类人,能够使用阅读的方法,这类人继承Human类,所以继承了name,age等属性
    • 实现某个接口,就相当于承诺了某种约定。实现语法的关键字是implements.
    public class Human{//设计一个Human类,具有姓名,年龄的属性
        String name;
        int age;
    }
    
    public interface Book{//接口一
     public void reading();
    }
    public interface Sport{//接口二
        public void football();
    }
    
    public class hhh extends Human implements Book,Sport{//hhh继承Human类中的name属性,实现了Book,Sport接口。  	
        @override
        public void reading(){
            System.out.println("完成一次读书");
        }
    
        @override
        public void Sport(){
            System.out.println("完成一次踢球");
        }
    }
    

二,对象转型

  • 首先区分引用类型与对象类型的概念:
public class Books{
    String name;
    int age;
    
	public static void main(String[] args){
 	   Books hhh = new Books();//有一个对象new Books; 同时也有一个引用hhh,两者引用类型和对象类型都是Books,通常情况下保持一致。
}

1. 子类转父类(向上转型)

  • 所谓转型,是指当引用类型和对象类型不一致的时候,才需要进行适当转换。

    • 转型有时会成功,有时失败
    • 判断转型的基本方法是把右边的当做左边来用 ,看是否能说通。
  • Human h = new Human();//人类是父类
    man hh = new man();//男人是父类的子类
    h = hh;//将男人当做人类来用是合理。反过来就不合理了。
    
  • 总结,所有的子类转换为父类都合理,

2.父类转子类(向下转型)

  • 父类转子类,有时候行,有时则不行,所以必须强制转换(但也有损失和风险)。

  • Human h = new Human();//人类是父类
    man hh = new man();//男人是父类的子类
    hh = (man)h;//h这个引用,指向的对象时man,需要强制转换
    

3. 没有继承关系的两个类

  • 互相转换,一定会失败

三.重写

  • 子类可以继承父类的方法,
    • 在继承后,重复提供该方法,就叫做方法的重写。又叫覆盖override。

1. 父类Books

  • 父类Books有个方法,叫做effect

    package exercise;
    public class Books{
        String name;
        int page;
        
        public void reading(){
            System.out.println("阅读");
        }
        public void effect(){
            System.out.println("物品使用后,可以有效果");
        }
    }
    

2.子类Subclass

  • 子类Subclass在继承了Item后,同时也提供了effect方法

    package exercise;
    public class Subclass extends Item{
        public void effect(){
            System.out.println("有效果");
        }
    }
    

3.调用重写的方法

  • 调用重写的方法,调用就会执行重写的方法,而不是重复从父类的原方法.

    package exercise;
    pubclic class Books{
        String name;
        int page;
        
        public void effect(){
            System.out.println("物品使用后,可以有效果");
        }
        
        public static void main(String[] args){
            Books h = new Books();
            h.effect();
            
            Subclass hh = new Subclass();
            hh.effect();//调用重写的作用就体现在这。
        }
    }