2022-07-23 第五组 张明敏 学习笔记

 

目录

 一、final 关键字

1. final(最终的)

final变量:

final 方法:

final类:

final应用举例​​​​​​​

2. Object类概述

3.小案例

二、心得体会


 一、final 关键字

1. final(最终的)

final变量:

  • final 表示"最后的、最终的"含义,变量一旦赋值后,不能被重新赋值
  • 被 final 修饰的实例变量必须显式指定初始值(即不能只声明)。
  • final 修饰符通常和 static 修饰符一起使用来创建类常量。

final 方法:

  • 父类中的 final 方法可以被子类继承,但是不能被子类重写
  • 声明 final 方法的主要目的是防止该方法的内容被修改。

final类:

final 类不能被继承,没有类能够继承 final 类的任何特性。

  • 所以无论是变量、方法还是类被final修饰之后,都有代表最终、最后的意思。内容无法被修改。
  • 在java中声明类、变量和方法时,可以用关键字final来修饰,表示“最终的”。

 

final修饰的类不能被继承,提高安全性和可读性。

System类、StringBuffer类

 

final修饰的方法不能被子类重写

Object类中的getClass方法

 

final修饰的变量称为常量(常量名全大写),只能被赋一次值。

final应用举例​​​​​​​

public final class Test02 {
  public static int totalNum = 20;
  public final int ID;

  public Test02() {
    ID = ++totalNum; // 可在构造器中给final修饰的“变量”赋值
  }

  public static void main(String[] args) {
    Test02 t = new Test02();
    System.out.println(t.ID);
    final int A = 30;
    final int C;
    C = 20;
    // J = 30; // 非法
  }
}

2. Object类概述

  1. Object是类层次结构的根类,所有的类都隐式的继承自Object类。

  2. Java所有的对象都拥有Object默认方法

  3. Object类的构造方法有一个,并且是无参构造

  • Object是java所有类的父类,是整个类继承结构的顶端,也是最抽象的一个类。
  • 像toString()、equals()、hashCode()、wait()、notify()、getClass()等都是Object的方法。

**toString()**方法表示返回该对象的字符串,由于各个对象构造不同所以需要重写,如果不重写的话默认返回类名@hashCode格式。

如果重写toString()方法后直接调用toString()方法就可以返回我们自定义的该类转成字符串类型的内容输出,而不需要每次都手动的拼凑成字符串内容输出,大大简化输出操作。

**equals()方法主要比较两个对象是否相等,因为对象的相等不一定非要严格要求两个对象地址上的相同,有时内容上的相同我们就会认为它相等,比如String 类就重写了euqals()**方法,通过字符串的内容比较是否相等。

 

3.小案例

/*
定义宠物类( Pet ),猫类(Cat)和狗类(Dog)
1、宠物都有属性姓名(name)和年龄(age)
2、宠物都有吃(eat)、喝(drink)、叫(shout)的方法
3、猫有爬树( climbTree )的方法
4、狗有警戒( police)的方法
 */
public class Pet {
    private String name;
    private String age;

    public Pet(){}
    public Pet(String name, String age) {
        this.name = name;
        this.age = age;
    }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getAge() { return age; }
    public void setAge(String age) { this.age = age; }

    public void eat(){
        System.out.println("宠物吃");
    }
    public void drink(){
        System.out.println("宠物喝");
    }
    public void shout(){
        System.out.println("宠物叫");
    }
}
class Cat extends Pet{
   String name="灰灰";
   String age="3";
   public void eat(){
       System.out.println("猫吃鱼");
   }
   public void drink(){
       System.out.println("猫喝水");
   }
   public void shout(){
       System.out.println("喵喵喵");
   }
   public void climbTree(){
       System.out.println("猫爬树");
   }
}

class Dog extends Pet{
    String name="大白";
    String age="4";
    public void eat(){
        System.out.println("狗吃肉");
    }
    public void drink(){
        System.out.println("狗喝水");
    }
    public void shout(){
        System.out.println("汪汪汪");
    }
    public void police(){
        System.out.println("狗警戒");
    }
}

 class PetTest{
     public static void main(String[] args) {
         Cat cat=new Cat();
         cat.eat();
         cat.drink();
         cat.shout();
         cat.climbTree();

         Dog dog=new Dog();
         dog.eat();
         dog.drink();
         dog.shout();
         dog.police();
     }
}

 

/*定义银行卡和信用卡类
        银行卡类
        >有余额属性和存钱、取钱方法
        信用卡类
        >继承银行卡类
        >有透支额度属性(初始1000)
        >重写取款方法
        测试类中分别使用两种卡完成存取款操作。
 */

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

public class Yinhangka {
  static   double balance=1000;

    public void add(double money) {
        balance+=money;
        System.out.println("存款成功,余额为"+balance);
    }

    public void send(double money) {
        if(balance>=money){
            balance-=money;
            System.out.println("取款成功,余额为"+balance);
        }
       else {
            System.out.println("余额不足,取款失败");
        }
    }
}

class XYK extends Yinhangka {
    public double tz = 1100;

    public void add(double money) {
        balance+=money;
        System.out.println("存款成功,余额为"+balance);
    }
    public void send(double money) {
        balance-=money;
        if (balance>=0){
            System.out.println("取款成功,余额为"+balance+"  "+"透支额为"+tz);
        }else if (balance<0&&balance>-1000){
            System.out.println("取款成功,余额为"+0.0+"   "+"透支额为"+(tz+balance));
        }else
            System.out.println("超过透支金额,取款失败");
    }

    static class Test {
        public static void main(String[] args) {
            Yinhangka y = new Yinhangka();
            XYK x = new XYK();
            y.add(100);
            System.out.println("用银行卡取700");
            y.send(700);
            System.out.println("用银行卡取1000");
            y.send(1000);
            System.out.println("用信用行卡存100");
            x.add(100);
            System.out.println("用信用卡取200");
            x.send(200);
            System.out.println("用信用卡取1000");
            x.send(1000);

        }
    }
}

 

二、心得体会

今天的这两个小案例,都能自己写出来了,还是有进步的!!!就是坐的腰疼~_~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值