面向对象2---final、抽象、接口

面向对象2

快捷键:ctrl+o 选择重写的方法

1、final关键字

被final修饰的变量不可以被改写,被称为常量
被final修饰的方法不可以被改写
被final修饰的类不可以被继承
在这里插入图片描述

2、抽象

abstract修饰方法
抽象方法:使用abstract来修饰的方法,抽象方法没有方法体,直接;结束
抽象类:如果类中是抽象方法,这个类必须是抽象类。

语法:

  • public abstract class Chouxianglei {
    public abstract void fulei();
  • 没有方法体

}

特点:
1、抽象类不能创建对象,抽象来没办法实例化
2、抽象类的子类写方法,必须重写父类中的方法,如果不重写,子类必须也是改成抽象类
3、父类抽象类,强制要求子类重写抽象类中的所有方法,一个不能少,用于规范子类必须拥有的动作方法
4、抽象类可以有正常的方法

父类:抽象
public abstract class Chouxiang {
    public abstract void eat();
}
-----------------------------------------------
子类:重写方法

public class Zilei extends Chouxiang {
    @Override
    public void eat(){
        System.out.println("猫吃鱼");
    }
---------------------------------------------------
测试:正常调用
    public static void main(String[] args) {
       //Zilei car=new Zilei();
       
       //多态性,父类引用子类的方法,可以调用子类中的重写的方法
        Chouxiang car1=new Zilei();
        
		//会报错出抽象类无法实例化
		//Chouxiang car2=new  Chouxiang();
        
        //car.eat();
        car1.eat();;
    }
}
运行:
	猫吃鱼

3接口

1、接口实际就是一种特殊的出抽象类
2、@Override 重写

  • 快捷键:右键->Generate…->Override Methods…->ctrl键选择重写内容

3、接口使用interface来声明
4、 能继承接口的只能是接口
5、接口和类是实现关系,关键字 implement实现,类可以实现接口
implements实现,与继承extends,类似的功能

6、类只能单独继承,接口 支持多实现多个接口,
7、接口具有多态性,通过接口可以把不相关的东西进行统一整合

特点:
1、接口中所以的方法都是抽象方法,不可以有正常方法。
2、接口中所以的变量都是全局静态常量不可以改变,接口的所有内容都是公开的,可以在外类中访问

接口:抽象
/**
 * 接口和类是实现关系
 * @author xhj
 * @version 1.0.0 2022/4/24 下午8:43
 */
//接口用interface来声明,已经不再是class类了
public interface Jiekou {
    //接口中所以的方法都是抽象方法,可以省略掉abstract
    //public abstract void getmoney();是完整写法  public abstract 可以不写
    void getmoney();
}
--------------------------------------------------------------------------
实现类:子类

public class Valuable implements Jiekou{
    //必须要实现抽象方法
    @Override
    public void getmoney(){
        System.out.println("黄金可以换钱");
    }
}
--------------------------------------------------------------------------
测试:

public class Test {
    public static void main(String[] args){
        Valuable g =new Valuable();
        //接口也具有多态性,接口引用实现类
        Jiekou j=new Valuable();
        g.getmoney();
        j.getmoney();

    }
}

运行:
	黄金可以换钱
	黄金可以换钱

接口支持多实现多个接口
一个对象可以用多种不同的接口类型来表示,体现接口具有多态性,以及多实现性

/**
 * @author xhj
 * @version 1.0.0 2022/4/24 下午8:43
 */
创建一个接口1:
抽象,值钱有价值
//接口用interface来声明,已经不再是class类了
public interface Jiekou {
    //public abstract void getmoney();是完整写法  public abstract 可以不写
    void getmoney();
}
---------------------------------------------------------------------------
创建一个接口2
抽象,受到保护
public interface Protectable {
     void cang();
}
------------------------------------------------------------------------
创建一个动物类。
public class Animal {
    public void eat(){
        System.out.println("动物会吃");
    }
}

--------------------------------------------------------------------------
建立一个对象熊猫
首先继承于动物类,实现 implements 值钱接口,受保护接口
public class Panda extends Animal implements Jiekou, Protectable{
//都需要重写继承父类,实现值钱,受保护
    @Override
    public void eat() {
        System.out.println("熊猫吃竹子");
    }
    @Override
    public void getmoney() {
        System.out.println("可以换钱");
    }
    @Override
    public void cang() {
        System.out.println("保护起来");

    }
}
--------------------------------------------------------------------------
测试:
public class Test   {
    public static void main(String[] args){
    一个对象可以用四种不同的类型来表示,提现接口具有多态性,以及多实现性
    ,通过接口可以把不相关的东西进行统一整合
        Panda p= new Panda();  		 //实例化熊猫
        Animal ani=new Panda();		 //父类动物引用,向上转型,
        Jiekou J=new Panda();  		 //接口值钱引用,向上转型
        Protectable pro=new Panda();{//接口受保护引用,向上转型

            p.cang();
            p.eat();
            p.getmoney();
            
            ani.eat();   //动物类型只能调用吃的方法
            J.getmoney();//值钱类型只能调用值钱的方法
            pro.cang();  //受保护型只能调用保护的方法
            }
        }
    }


Object类

在java中所以的类都继承object
object是一个类,所以类的根
我们写的类默认继承object
ctrl键+object进入类
在这里插入图片描述

equals方法

==:判断左右两端的数据是否一致
equals: object类为我们提供的一个方法,用来判断两个对象是否相等,优点是可以自己重写这个方法不用obiect提供的方法。
字符串的判断用equals来判断

==
在这里插入图片描述
equals比较方法
可以自己定义equals的比较方法
在这里插入图片描述

在这里插入图片描述

toString方法

toString 对一个对象用字符串来描述,该怎么描述
toString 是object默认的方法,可以重写原本是包名+类名+内存地址
在这里插入图片描述

hashcode值

通过改变hashcode值内存地址改变使==成立
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值