zoukankan      html  css  js  c++  java
  • Java日志第11天 2020.7.16

    第五章 类的继承和多态

    5.3 static关键字

    通常访问类的属性和方法需要创建该类的实例,而如果一个成员被声明为static,就能够不引用任何对象实现访问。

    5.3.1 静态变量

    静态变量只需要在变量前年加上static关键字,不需要通过对象来访问,直接使用“类名.变量名”直接访问,并且该变流量不属于哪一对象。

    public class VarDemo{
    private static int x=1;

    public static void main(String[] args) {
    VarDemo.x++;
    VarDemo v = new VarDemo();
    v.x++;
    System.out.println("x="+x);
    }
    }

    5.3.2 静态方法

    静态访问是在方法前加上static关键字,一旦方法被声明为静态方法,就可以使用“类名.方法名()”来调用,并不需要对象来调用。

    public class StaticMethodDemo {
    public static void main(String[] args) {
    StaticMethodDemo.test();
    }
    public static void test(){
    System.out.println("test...");
    }
    }

     5.3.3 静态代码块

    *static代码块也叫静态代码块,可以有多个,并且为之随便放,它不再任何的方法体内。

    *static代码块会优先于构造器执行。

    *如果static代码块有多个,找他们在类中出现的先后顺序依次执行。

    *每个代码块只会被执行一次。

    public class StaticBlockDemo {
    static {
    System.out.println("静态代码块");
    }
    public StaticBlockDemo(){
    System.out.println("构造方法");
    }

    public static void main(String[] args) {
    StaticBlockDemo d = new StaticBlockDemo();
    StaticBlockDemo d2 = new StaticBlockDemo();
    }
    }

     

    5.4 final关键字

    final修饰的类不能被继承,修饰的方法不能被重写,修饰的变量代表该变量是常量。

    5.4.1 final属性

    final修饰属性,代表该属性是常量,并且该属性不能被修改。

    public class FinalVarDemo {
    private static final int x=5;

    public static void main(String[] args) {
    x=10;//报错
    }
    }

     5.4.2 final方法

    final修饰的方法不能被重写。

    重写并不是指子类一定不能定义同名方法,如果父类的方法是私有类型,子类是允许定义该方法的。

    class A{
    public final void t(){
    System.out.println("A t()");
    }
    private final void r(){
    System.out.println("A r()");
    }
    }
    class B extends A{
    //编译错误!父类方法为final类型,子类不能重写
    public void t(){
    System.out.println("B t()");
    }
    //编译正确!父类方法为private
    public void r(){
    System.out.println("A r()");
    }
    }

     5.4.3 final类

    使用final修饰的类表示该类不能被继承。

    final class A{
    public final void t(){
    System.out.println("A t()");
    }
    }
    class B extends A{
    //编译错误!子类不能继承
    }

     5.5 abstract关键字

    抽象类中既有抽象方法,也有具体实现的方法。

    抽象类必须由其子类继承,才能实例化对象。

    抽象方法只有方法头,没有方法体。

    5.5.1 抽象类

    定义:abstract class 类名()

    5.5.2 抽象方法

    抽象方法只声明方法头,没有方法体。

    public abstract class Type{
    //只有方法头,没有方法体
    public abstract double area();
    }

     *抽象类中除了有抽象方法,还可以有具体的实现方法

    public abstract class Type{
    //只有方法头,没有方法体
    public abstract double area();
    public void info(){
    System.out.println("我是图形");
    }
    }

    *如果想视同这些方法,必须由抽象类的子类来实现

    public class Circle extends Type{
    private static final double PI = 3.14;
    private int r=5;
    @Override
    public double area(){
    double area = PI*r*r;
    return area;
    }
    //重写抽象类中的info
    public void info(){
    System.out.println("我是圆形");
    }
    public static void main(String[] args){
    Type type = new Circle();
    type.area();
    type.info();
    }
    }

     

    今天把第五章搞完了,明天看看视频,感觉这一章掌握的不是很好,看视频巩固一下,再记一记知识点,然后写完后边的题目。

  • 相关阅读:
    Codeforces 834D The Bakery
    hdu 1394 Minimum Inversion Number
    Codeforces 837E Vasya's Function
    Codeforces 837D Round Subset
    Codeforces 825E Minimal Labels
    Codeforces 437D The Child and Zoo
    Codeforces 822D My pretty girl Noora
    Codeforces 799D Field expansion
    Codeforces 438D The Child and Sequence
    Codeforces Round #427 (Div. 2) Problem D Palindromic characteristics (Codeforces 835D)
  • 原文地址:https://www.cnblogs.com/Gazikel/p/13321529.html
Copyright © 2011-2022 走看看