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();
    }
    }

     

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

  • 相关阅读:
    SharePoint Portal Server与SharePoint Services之间的关系
    配置Microsoft Visual SourceSafe 2005的局域网/Internet访
    Maven创建Web项目(idea)
    Maven入门(idea)
    Windows下搭建Vue脚手架CLI
    关于wince中的全屏显示
    ubuntu右键添加打开终端的快捷菜单[转]
    将CString转换成string ...
    090606日记
    Java中的InputStream和OutputStream
  • 原文地址:https://www.cnblogs.com/Gazikel/p/13321529.html
Copyright © 2011-2022 走看看