从0开始学Java系列 day11:一些关键字和object类中常用方法,抽象与接口

一.虚方法和非虚方法
虚方法:可以重写的方法
非虚方法:不可以重写的方法:静态方法 构造方法 私有方法

二.final
final修饰的类不能被继承 (太监类)
final修饰的变量 是常量
final修饰的方法 不能被重写
final修饰的对象 地址值不能被改变

三.object类
object类是所类直接或者间接的父亲
如果一个类没有显示的继承另一个类 则此类 默认继承自object类

四.native
本地的 本国的 原生的
1.native 只能是修饰方法
2.native方法没有方法体
3.java有些功能无法实现 需要借助c/c++实现 native方法
4.native方法被调用时 在本地方法栈中开辟空间
5.native方法是可以被重写的
五.Object类中方法
toStiring():直接快速输出对象的属性值 操作:右键找到Generate里面有

public class Test {
    public static void main(String[] args) {
        Person person = new Person("李白", 18);
        String s = person.toString();
        System.out.println(person); //重写前运行com.atguigu.review.Person@4554617c
        //重写toString方法后运行结果Person{name='李白', age=18}
    }
class Person{
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    String name;
    int age;
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
}

getClass():获取运行时类型

Animal ani =new Cat();
ani.getClass();

hashCode():返回该对象的哈希码

equals():
==:1.比较基本数据类型 比较的是实际的值
2.比较的是引用数据类型 比较的是地址值
equals():
1.重写前 比较的是地址值
2.重写后 比较的是属性值

六.抽象
抽象的意义:
1.在创造一个事物之前我们大致模糊的把将要编写的类(实例)想象成一个大致的类
但其本身不能创造实例
2.规范子类 如果你将要继承我那么就必须继承我所有的要求你做到的事,当然你也可以自主拓展

如下:


public abstract class Animal  {
    abstract void eat();
    abstract void sleep();
}
class  Cat extends Animal{
    public void catchMouse(){
    }
    @Override
    void eat() {
    }
    @Override
    void sleep() {
    }
}

抽象的实现
//定义抽象类
[权限修饰符] abstract class 类名{}
//如何定义抽象方法
[权限修饰符] abstract 返回值类型 方法名(形参列表){}

抽象使用时注意点:
1.一个类 必须实现父类(抽象类)所有抽象方法 否则 此类也要变成抽象类
2.抽象类不可创建对象
3.抽象类可以存在普通的资源(方法 属性)
4.如果一个类中有抽象方法 那么此类 一定为抽象类
5.抽象类中可以没有抽象方法

七.接口
接口的作用:
1.定义规范 如果你是 则必须能
2.用来表述 现实社会中 has a 的关系

如何定义接口:

[权限修饰符] interface 接口名{
常量;//public static final 修饰
1.抽象方法;//public abstract 修饰
void show();
2.默认方法://public
default 返回值类型 方法名:
3.静态方法//public
static 返回值类型 方法名:
}

使用接口及其注意点:‘
1.可以让一个类实现多个接口 (一个类可以先继承一个父类然后再实现多个接口,顺序不能变。)

class 类名 implements 接口名1,接口名2{}

2.如果一个类实现了接口 那必须重写接口中所有的抽象方法 否则 也要将此类变为抽象类

3.接口可以继承

接口1 extends 接口2,接口3{}

如果一个类实现了接口1,那么它不仅要重写接口1中的抽象方法 也要重写接口2,3的抽象方法

4.当一个类实现了两个接口 内部有同名的 默认方法 则必须要重写
4.1.直接重写 调用的是重写后的方法
4.2.在重写的方法中调用:

接口名.super.方法名();
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值