• 【Java抽象类 11】


    一、抽象类

    1、语法,在class关键字前边添加abstract关键字

    2、抽象类无法实例化,但是抽象类中仍然有构造方法

    3、抽象类中不一定有抽象方法,但是抽象方法必须出现在抽象类中

    4、抽象方法修饰符中有abstract关键字,并且抽象方法没有实现体。以“;”结束

    5、非抽象的类继承抽象类,必须将抽象类中的方法进行实现

    6、abstract和final共存

    package com.JavaStudy.study0509;
    
    abstract class Account {
    
        //抽象方法没有实现体
        abstract void m(double money);
    
        Account(){
            super();//调用Object的缺省构造器
        }
    
        public void n(){
            System.out.println("n");
        }
    
        public static void main(String[] args){
            //抽象类不能进行实例化
            //Account account = new Account();
    
            DebitAccount debitAccount = new DebitAccount();
            debitAccount.m(10000.0);
            debitAccount.n();//子类继承父类可以用父类中的成员方法
    
            DepositAccount depositAccount = new DepositAccount();
            depositAccount.m(20000.0);
        }
    }
    
    //非抽象类继承抽象类
    class DepositAccount extends Account{
    
        //非抽象类继承抽象类,必须将抽象方法进行实现(即增加实现体)
        void m(double money){
            System.out.println("储蓄账户取款"+money+"元");
        }
        DepositAccount(){
            super();
        }
    }
    
    class DebitAccount extends Account{
        void m(double money){
            System.out.println("信用账户取款"+money+"元");
        }
        DebitAccount(){
            super();
        }
    
    }

     二、final关键字的作用
    1、final可以用来修饰引用,方法和类。
      1、如果引用是基本数值类型,则该引用为常量,该值无法修改。并且final修饰的常量必须赋值

      2、如果引用为引用数据类型,比如对象,数组,则该对象,数组本身的数值是可以修改的,但指向该对象或数组的内存地址

      3、如果引用是类的成员变量,则必须当场赋值,否则编译器无法通过

    package com.JavaRestudy.Test08;
    
    /**
     * @Author wufq
     * @Date 2020/7/6 14:13
     */
    public class Demo {
        //final修饰的常量,必须要赋值
        final int a=1;
        //final修饰的基本数据类型常量,不能修改
        //a = 10;
    
        public static void main(String[] args){
            Person p = new Person();
            //final修饰的类,类里面的常量值可以修改,但是内存地址不能修改
            p.name = "ab";
            System.out.println(p);
    
            //final修饰的数组,可以改变值
            final int[] data = {1,4,33};
            data[1] = 555;
            for(int i=0;i<data.length;i++){
                System.out.print(data[i]);
            }
        }
    }
    
    final class Person{
        String name = "cs";
    }

    2、用来修饰一个方法

    当使用final修饰方法时,这个方法将是一个最终的方法,不能被重写但是可以被子类继承(即:子类可以使用这个方法)

    package com.JavaRestudy.Test08;
    
    /**
     * @Author wufq
     * @Date 2020/7/6 14:33
     */
    public class ZhiYe {
        public final void read(){
            System.out.println("读");
        }
    
        public void write(){
            System.out.println("写");
        }
    
    }
    
    class Teacher extends ZhiYe{
    
        //final修饰的方法,不能被重写
    //    public void read(){
    //
    //    }
        
        public void write(){
            System.out.println("子类重写父类write方法");
        }
        public static void main(String[] args){
            Teacher teacher = new Teacher();
            teacher.write();
            //final修饰的方法,可以被之类继承
            teacher.read();//
        }
    }

    3、final修饰类,则此类不能被继承

  • 相关阅读:
    表单
    html 基础代码
    thread
    流的存入读取
    异常

    Android——多线程编程练习题
    Android——进度对话框
    安卓3个练习题
    Android—对话框
  • 原文地址:https://www.cnblogs.com/frankruby/p/12867735.html
Copyright © 2020-2023  润新知