面向对象核心技术笔记

本文详细讲解了Java中的抽象类和接口的区别与使用,包括抽象类的定义、实现以及接口的关键字和实现方式。此外,还介绍了Java异常处理机制,包括异常的分类和处理关键字。最后,提供了几个面向对象编程的练习题,涉及类的设计和方法的运用。

1.抽象类与接口

1.1抽象类

抽象类是Java中一种比较特别的类。它有着抽象方法(也可以有普通方法和属性)。在我的理解中,抽象方法类似于一个架构。具体的内容则是由重写的方法实现。定义抽象类和抽象方法的关键字是abstract。抽象类不能被实例化,但可以被继承。普通的类继承了抽象类后必须实现它的抽象方法。需要注意的是,抽象类不能是private的,因为抽象类不被继承就没有任何意义。Java里面只能进行单继承。
抽象类的定义:

abstract class wad{
    abstract void a();
}

继承抽象类并实现抽象方法:

public class main extends wad{
    void a(){
        System.out.println("dad");
    }
    public static void main(String[] args) {
        new main().a();
    }
}

输出结果:
dad


1.2接口

接口可以说是一种更加抽象的抽象类。其关键字是interface。接口的属性都是常量,其修饰符只能是public static final,接口的方法都是抽象方法。抽象类可以有普通的属性及方法。而接口则不允许有。在Java里面,类可以实现多个接口,这一功能可以弥补Java里不能多继承的不足。实现接口的关键字是implements。
接口的定义:

interface adwad{
    int a =10;
    abstract void c();
}


实现接口:

class sss implements adwad{
    public void c(){
        System.out.println(a);
    }
}

public class main {
    public static void main(String[] args) {
        new sss().c();
    }
}

输出结果为:
10


2.异常处理

Java拥有异常处理机制,可以算是一门健壮的语言。Java里面的异常可以分为三类。一类是错误,错误不能完全算是异常,错误是脱离开发人员控制的。另一类是检查性异常,这一类异常是开发人员无法预料的,一般是由用户引起的,比如打开空文件。最后一类是运行时异常,是开发人员能够避免的。
在Java中异常处理的根接口是Throwable。这一接口有着两个子接口,分别是Error和Exception。
Error是错误,Exception是异常。同时异常也分为两种,一种是运行时异常,一种是非运行时异常。运行时异常是程序运行的时候产生的,如数组下标越界,空指针等异常,而非运行时异常是编译的时候就要处理的。比如IO异常,SQL异常。

异常处理有五个关键字:try、catch、finally、throw、throws。
其中try和catch要合并一起使用,为try catch语句。try用来监听异常是否有发生,catch用来捕捉异常。finally语句则用于try catch语句后面,无论是否有异常发生,finally语句都会被执行。throw语句则是开发人员手动抛出异常,而throws关键字则是用于方法定义的时候,用来声明该方法可能会出现异常,如果有throws关键字的方法被调用时,需要使用try catch语句进行包装。

public class main{
    public static void main(String[] args){
        car a =new car(15);
        System.out.println(a.remain);
        gas_station b =new gas_station();
        try {
            b.jiayou(a);
            throw new Exception();
        }catch (Exception e){
            System.out.println("出现异常啦"+e);
        }finally {
            System.out.println("哈哈哈");
        }
        System.out.println(a.remain);
    }
}


public class gas_station {
    public void jiayou(car a)throws Exception{
        a.remain +=2;
    }
}


public class car {
    int remain =0;
    car(int remain){
        this.remain =remain;
    }
}

运行结果:
15
出现异常啦java.lang.Exception
哈哈哈
17

注:Java支持自定义异常,在定义异常的时候如果是检查性异常需要继承Exception类,如果是运行时异常需要继承RuntimeException类。


类于方法练习题:

练习1:设计加油站类和汽车类,加油站提供一个给车加油的方法,参数为剩余汽油数量。每次执行加油方法,汽车的剩余汽油数量都会加 2。
练习2:智能手机的默认语言为英文。,但制造手机时可以将默认语言设置为中文。编写手机类, 无,参构造方法使用默认语言设计,利用有参构造方法修改手机的默认语言。
练习3:张三去KFC买可乐,商家默认不加冰块。但是张三可以要求加 3 个冰块。请利用有参构造方法实现上述功能。
练习4:创建教师类,类中有姓名、性别和年龄三个属性,在构造方法中使用 this 关键字分别为这三个成员属性赋值。
练习5:一只大熊猫,长 1.3 米,重 90千克。在自定义方法中使用this关键字调用类的成员变量并在控制台输出这只大熊猫的信息。
练习6:创建信用卡类,有两个成员变量分别是卡号和密码,如果用户开户时没有设置初始密码,则使用"123456"作为默认密码。设计两个不同的构造方法,分别用于用户设置密码和用户未设置密码两种构造场景。


1.

public class car {
    int remain =0;
    car(int remain){
        this.remain =remain;
    }
}
public class gas_station {
    public void jiayou(car a){
        a.remain +=2;
    }
}

public class main{
    public static void main(String[] args){
        car a =new car(15);
        System.out.println("剩余油量:"+a.remain);
        gas_station b =new gas_station();
            b.jiayou(a);
        System.out.println("剩余油量:"+a.remain);
    }
}

输出结果:
剩余油量:15
剩余油量:17


2.


class Language{
    String language =null;
    Language(String language){
        this.language =language;
        System.out.println(language);
    }
    Language(){
        this("English");
    }

    public static void main(String[] args) {
        Language a =new Language();
        a =new Language("中文");
    }
}

输出结果:
English
中文


3.

class KFC{
    int bingkuai =0;
    KFC(int bingkuai){
        this.bingkuai =bingkuai;
        System.out.println("冰块数量为"+bingkuai);
    }
    KFC(){
        this(0);
    }

    public static void main(String[] args) {
        KFC c =new KFC();
        c =new KFC(2);
    }
}

输出结果:
冰块数量为0
冰块数量为2


4.

class teacher{
    String name =null;
    String sex =null;
    int age;
    teacher(String name,String sex,int age){
        this.name =name;
        this.sex =sex;
        this.age =age;
    }

    public static void main(String[] args) {
        teacher a =new teacher("张三","女",21);
        System.out.println("姓名:"+a.name+"  "+"性别:"+a.sex+"  "+"年龄:"+a.age);
    }
}

输出结果:
姓名:张三 性别:女 年龄:21


5.

class panda{
    float Long =1.3f;
    int height =90;
    public void a(){
        System.out.println("大熊猫长"+this.Long+"米"+"  "+"重:"+this.height+"千克");
    }

    public static void main(String[] args) {
        panda a =new panda();
        a.a();
    }
}

输出结果:
大熊猫长1.3米 重:90千克


6.

public class credit {
    long user =0;
    long password =0;
    credit(long password){
        this.password =password;
        System.out.println(password);
    }
    credit(){
        this(123456);
    }

    public static void main(String[] args) {
        credit a =new credit(235689);
        a =new credit();
    }
}


输出结果:
235689
123456

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值