• java面向对象编程知识点总结


    一:今天完成

    上午详细了解了java面向对象编程的一些细节,记录如下。

    1)类

    是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法、初始化程序和嵌套类型。

    常用成员有四种:类字段、类方法、实例字段、实力方法。

    其它引用类型还包括数组、接口、枚举和注解。

    2)字段和方法

    示例:一个简单的类和成员

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public class Circle{
     
    //类字段
    public static final double PI=3.14159;
     
    //类方法
    public static double radiansToDegrees(double radians){
        return radians * 180 / PI;
    }  
      
    //实例字段
    public doule r;
     
    //两个实例方法
    public double area(){
      return PI*r*r;
    }
    public double circumference(){
      return 2*PI*r;
    }
     
    }

      还有就是this的使用,它竟然是一个隐式参数!第一次知道,,也可能是我之前没留意。意义是“在当前对象上调用实例方法”。

    3)创建和初始化对象

    构造方法看作是类成员,可以定义多个构造方法,只要参数列表不一样就行。在一个构造方法中也可以调用其它构造方法,可以避免大量的初始化代码。

    4)子类和继承

    对于super关键字,需要了解的是:在子类中调用超类构造方法时必须在第一个语句中调用。代码如下

    1
    2
    3
    4
    5
    publc PlaneCircle(double x;double y;double r){
    super(r);//调用超类的circle()构造方法
    this.cx=x;
    this.cy=y;
    }

      这里面涉及到构造方法链,就是创建对象时的一系列构造方法,从子类到顶端的Object类为止。

    如何引用被遮盖的字段?把this(或 类的实例)矫正为适当的超类,然后再访问字段。

    例如有三个类A、B和C。它们都定义了一个x的字段,并且C是B子类,B是A子类,那么,在C中可以这样

    1
    2
    3
    4
    5
    6
    7
    8
    9
    x;//c类
     
    this.x;//c类
     
    super.x;//B类
     
    ((B)this).x;/B类
     
    ((A)this).x;//A类<br>类似的,如果c是C的实例,那可以这样引用<br>c.x;<br>((B)c).x<br>((A)c).x

    还需要分清方法覆盖和字段遮盖。

    注意调用覆盖方法时的super和调用超类时的super用法是不一样的。

    5)数据隐藏和封装

    java的包不能“嵌套”,比如java.A.a和java.A是不同的包

    对于访问控制和继承,如下

    总结了一下成员访问规则,如下

    对于有些数据访问器方法(getter,setter),需要记住的是,public方法访问字段可以进行检查。

    6)抽象类和方法

    有些抽象类可以没有任何抽象方法,比如classLoder。

    示例代码:一个抽象类和两个具体类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public abstract class Shape{
    //两个抽象方法
    public abstract double area();
    public abstract double circumference(); 
    }
     
    //具体子类
    class Circle extends Shape{
     
    public static final double PI= 3.14159265358;//类字段
     
    protected double r;//实例字段
     
    public Circle(double r){this.r=r}//构造方法
     
    public double getRadius(){ return r;}//访问器
     
    public double area(){ return PI*r*r ;}//实现的两个抽象方法
    public double circumference(){ return 2 *PI*r ;}
    }

      对象之间也可以发生转换,分为放大和缩小转换

    1
    2
    Object  o="string";//放大
    String s= (String)o;//缩小

      数组转换规则只适用由对象或数组 组成的数组,基本类型的数组不能转换。

    二:下午计划

    看完并记录java类型系统这一章,有时间的话开始做那个任务一的第一个板块
    三:遇到问题

    为什么感觉平时写代码没有感觉到有这么多的知识点?是没用到吗?还是自己缺少思考?
    四:收获感悟

    相对于其它面向对象的语言,java真可以说的上是入门首选,即便它有时候会显得啰嗦一点。

  • 相关阅读:
    使用QT在子线程中访问串口
    小程序批量上传图片方案
    Jenkins自动化远程部署(vue-github)
    nginx配置https证书
    Linux 安装php7
    Vue技术点整理-指令
    如何保证接口的幂等性?
    mybatis 一对多分页查询数据条数不匹配解决
    源码系列-JDK-String
    kafka window 操作
  • 原文地址:https://www.cnblogs.com/yishengyishiduaini321/p/6534404.html
Copyright © 2020-2023  润新知