Java类和对象(四)

一、抽象类

抽象方法:没有方法体的方法就叫抽象方法

抽象类:一个类中只要包含了抽象方法,那么这个类必须是一个抽象类,但是抽象类中可以不包含有抽象方法,而且抽象类中也可以包含有普通方法

注意:

1.抽象类被子类继承的时候,必须重写其下所有抽象方法,否则程序会报错,或者将子类也变成抽象类

2.:抽象类中可以包含有抽象、普通两种类型的方法,而普通类中必须只能包含有普通方法

3.抽象类由abstract关键字进行修饰,抽象方法也是

public abstract class Animal {
    //抽象方法没有方法体 要加abstract进行修饰
    public abstract void eat();
    //普通方法
    public void jiao(){
        System.out.println("动物叫")
    }
}

抽象类的应用场景:在父类中某些方法要求子类必须对其进行重写,此时,父类的某些方法可以声明为抽象方法,那么父类就可以变成了抽象类

抽象类的特性:  

(1).抽象类对象并不能通过自己来创建,但是产生的同时会自动创建一个父类抽象类对象

(2).可以有属性

(3).可以包含有抽象和普通的方法

(4).因为有自动创建的对象所以能创建构造方法

(5).依旧是单继承

二、final,static修饰词

(1).final修饰词:

作用:

a.使全局变量或局部变量,变成为常量

注意:修饰属性全局变量:必须在初始定义时就赋值,否则会报错

           值只能赋值一次,一旦赋值以后就无法发生变更

final int x = 10;
x = 20;//错误的写法 只能赋值一次
final int a;
a = 20;//正确的写法 初始时并未赋值
System.out.println(a);

b.表示方法不能被重写

public class A {
    public final void test(){//父类final方法
    }
}
public class B extends A{
    public void test(){//此方法无法被重写
    }
}	

c.表示类不能被继承

public final class A {
}
//修饰符final修饰的A类无法被继承,这里会报错
public class B extends A{
}

(2).static修饰词:

static可以修饰属性吗,方法,类(内部类)

static修饰结果 : 将属性或方法从对象级别变成类级别元素

public class Test {
    public static int age;
    //普通方法 对象级别的
    public static void myStatic(){
    }
    public static void main(String[] args) {
        Test.age = 10;//类名.属性名
        Test.age = 30;
        Test.age = 50;
        Test.myStatic();//类名.方法名
    }
}

 类级别元素:

(1):类一级别的元素的特点是:所有对象共享,对象级别的元素是每个对象独享的

(2):生命周期问题 : 对象如果一直存在,不被回收,堆积过多容易导致堆内存溢出错误永远不会自动结束生命周期-导致静态变量常驻内存,不适合定义占用空间过大的元素

静态的使用场景:

(1).需要进行共享的属性元素

(2).静态方法-都是为了操作静态属性使用-用着方便

(3).综合考虑内存占用问题

三、接口:

接口:全都是抽象方法的方法,比抽象类还抽象的方法

使用方式:把类名前面的class变成interface

public interface Animal {
    public void eat();//不需要写abstract修饰词
    void jiao();// 可以省略public
}

接口的使用场景:父类中全部方法要求子类必须对其进行重写,此时,父类的全部变为抽象方法,父类就可以声明为接口

接口的特性:

(1).不能手动创建对象,也不会自动创建对象

(2).添加的都是静态的常量

(3).方法全是全是抽象方法

(4).没有构造方法

(5).多重继承(学名多重实现)接口和接口之间也可以存在继承关系是多继承

public class C implements A,B{//多重继承
    @Override
    public void a() {

    }

    @Override
    public void b() {

    }
}

接口和抽象类区别:

接口抽象类
属性静态的常量 任意
方法只能是抽象方法 可抽象,普通

构造方法

没有
类的继承关系 多重实现或多重继承 单继承
声明的关键字 interface abstract

本人会定期发表关于Java的相关知识,如果有错误请指出,觉得好请点赞,收藏加关注,谢谢!! 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值