首页 > 其他分享 >包,final,权限修饰符,抽象类和抽象方法

包,final,权限修饰符,抽象类和抽象方法

时间:2022-11-09 14:01:41浏览次数:32  
标签:name age 修饰符 public class void 抽象类 final

  • 可以理解为文件夹

  • 在Java中使用同一个包中的类,不需要导包

  • 使用Java.lang包中的类时,不需要导包

  • 其他情况都需要导包

  • 如果同时使用两个包中的同名类,需要使用全类名

 

final

方法:当修饰方法的时候,表明该方法是最终方法,不能被重写

    class Fu{
       public final void show(){
           System.out.println("123");
      }
  }

   class Zi extends Fu{
       @Override
       public void show(){//这里是直接报错的
           System.out.println("23");
      }
  }
}

类:表明该类是最终类,不能被继承

    final class Fu{
  }

   class Zi extends Fu{
}//这里也是直接报错的

(以上两种自己写代码时候很少会使用,一般出现在源码里面,做了解)

变量:如果被final修饰也可以叫它常量,只能被赋值一次(需掌握)

举个栗子:圆周率就是使用final关键字修饰的

public static final double PI = 3.14159265358979323846;

常量:实际开发中,常量一般作为系统的配置信息,方便维护,提高可读性

命名规范

  • 单个单词:全部大写

  • 多个单词:全部大写,单词之间用下划线隔开

细节

  • final修饰的变量是基本数据类型,那么变量储存的数据值不能发生改变

  • final修饰的变量是引用数据类型,那么变量储存的地址值不能发生改变,对象内部的可以改变

    得出一个结论:这就是为什么字符串是不可变的

 

 

权限修饰符

修饰符同一个类同一个包中其他类不同包下的子类不同包下的无关类
private      
默认(不写)    
protected  
public

作用范围:private<默认<protected<public

有一些小规则:

实际开发中,一般只用private和public

  • 成员变量私有

  • 方法公开

特例:如果方法中的代码是抽取其他方法中共性代码,这个方法一般也私有

 

 

抽象类和抽象方法

  • 抽象方法:将共性的行为(方法)抽取到父类之后。由于每一个子类执行的内容是不一样的,所以,在父类中不能确定具体的方法体,该方法就可以定义为抽象方法。

  • 抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类

抽象类的定义格式

public abstract class 类名{}

抽象方法的定义格式

public abstract 返回值类型 方法名 (参数列表);

public abstract class Person {
   public abstract void work();
}

注意事项:

  • 抽象类不能被实例化(也就是不能被创建对象)

  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

  • 可以有构造方法

  • 抽象类的子类

    要么重写抽象类中的所有抽象方法

    要么子类本身是抽象类

 

 

案列

 

 

首先抽取公共属性,定义Animal类,然后定义抽象类 这个行为

public abstract class Animal {
   private String name;
   private int age;

   public Animal() {
  }

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

   public void drink(){
       System.out.println("动物在喝水");
  }

   public String getName() {
       return name;
  }

   public void setName(String name) {
       this.name = name;
  }

   public int getAge() {
       return age;
  }

   public void setAge(int age) {
       this.age = age;
  }

   public abstract void eat();//此处是抽象方法
}

分别写出Frog,Sheep,Dog类

public class Frog extends Animal{
   public Frog() {
  }

   public Frog(String name, int age) {
       super(name, age);
  }

   @Override
   public void eat() {
       System.out.println("青蛙吃虫子");
  }
}
public class Sheep extends Animal{
   public Sheep() {
  }

   public Sheep(String name, int age) {
       super(name, age);
  }

   @Override
   public void eat() {
       System.out.println("山羊吃草");
  }
}
public class Dog extends Animal{
   public Dog() {
  }

   public Dog(String name, int age) {
       super(name, age);
  }

   @Override
   public void eat() {
       System.out.println("狗吃骨头");
  }
}

定义测试类

public class Test {
   public static void main(String[] args) {
       Frog f=new Frog("小绿",1);
       System.out.println(f.getName()+","+f.getAge());
       f.drink();
       f.eat();
  }
}

 

 

运行截图如上

 

 

总结

抽象类的作用是什么样的

  • 抽取共性时,无法确定方法体,就把方法定义为抽象的。

  • 强制让子类按照某种格式重写

  • 抽象方法所在的类,必须是抽象类

标签:name,age,修饰符,public,class,void,抽象类,final
From: https://www.cnblogs.com/lovedong/p/16873387.html

相关文章

  • 继承类成员访问修饰符
    访问权限;public是最自由的,没有任何限定;private、protected对比看,相同地方:类内、友元函数可以访问;不同地方:被protected修饰的类成员可以在子类内部访问到;private修饰的不......
  • Codeforces Round #740 (Div. 1, based on VK Cup 2021 - Final (Engine)) B
    B.UptheStrip考虑dpdp[i]表示当前i位置的cnt考虑转移我们对于第一个操作显然只用维护一个后缀和即可dp[i]+=s[i+1]对于第二个操作也很简单我们知道i的值z除一......
  • 抽象类
    1.abstract修饰符修饰的类就是抽象类2.抽象类可以没有抽象方法,但是有抽象方法的类一定是抽象类3.抽象类不能通过new来创建对象,只能进行继承4.抽象方法,只有方法的声明,没......
  • final关键字的作用
    1、被final修饰的类不能被继承;2、被final修饰的变量不能被改变,如果修饰引用,表示引用不可变,但是引用的指向的内容可以改变;3、被final修饰的方法不能被重写;4、被final修饰......
  • Windows 环境下 jfinal-undertow 启动脚本
    @echooffrem启动入口类setMAIN_CLASS=com.dsideal.StartremJava命令行参数,根据需要开启下面的配置,改成自己需要的,注意等号前后不能有空格remset"JAVA_OPTS......
  • vue-事件修饰符
    事件修饰符顾名思义,“事件修饰符”是用来修饰事件的。Vue.js为v-on提供了事件修饰符,修饰符是由点开头的指令后缀来表示的。 事件修饰符有: .stop阻止冒泡.p......
  • 抽象类
    抽象类不能实例化对象,类的其它功能存在,变量、方法和构造的访问方式和普通类一样抽象类必须被继承,才能被使用抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个......
  • 包,权限修饰符
    包:package,就是文件夹(目录)作用:分类管理Java文件,避免重命名的冲突特点:可以有多级,每层目录就是一级定义包:使用package关键字在类......
  • 按照 ExpressionVisitor 抽象类 思路 重新实现表达式 从左到右 递归解析 解决参数编号
     核心递归方法根据表达式类型跳转到具体的处理方法处理完后返回null跳出循环///<summary>///访问///</summary>///<pa......
  • Codeforces Round #778 (Div. 1 + Div. 2, based on Technocup 2022 Final Round) F M
    A-E都还是比较简单的。首先,容易想到的,异或上\(2^k\),相当于以\(2^{k+1}\)的长度分块,然后每一块对半切,然后交换左右部分。我的想法是由于这个交换的性质,也许我们可以尝......