一:今天完成

上午详细了解了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真可以说的上是入门首选,即便它有时候会显得啰嗦一点。

最新文章

  1. UI设计中的48dp定律【转】
  2. paper 125:NSCT——Nonsubsampled contourlet 变换程序(尺度不变性问题研究)
  3. Winform文件下载之WebClient
  4. tomcat常用配置
  5. Ubuntu各文件夹功能说明
  6. pythonchallenge之C++学习篇-01
  7. Archlinux 添加无线网络
  8. chrome浏览器插件window resizer调试webapp页面大小
  9. Javascript基础(2)
  10. uva 10935 throwing cards away &lt;queue&gt;
  11. Asp.net MVC4高级编程学习笔记-视图学习第一课20171009
  12. sql: 左连接 和内连接区别联系
  13. android横竖屏切换activity生命周期变化
  14. HTTP各个status code是什么意思【已解决】
  15. Pycharm远程调试服务器代码(使用Pipenv管理虚拟环境)
  16. PHP工厂方法模式
  17. 人群密度估计 CrowdCount
  18. ML面试题网站及ML模型网站
  19. 回忆:NVelocity--基于.NET的模板引擎
  20. Spring MVC开启注解

热门文章

  1. Solr In Action 中文版 第一章(三)
  2. input 中 datetime-local 方法
  3. 配置多层NAT和端口映射实现外网访问内网
  4. 【转】VirtualBox网卡设置
  5. 2017.7.14 使用case when和group by将多条数据合并成一行,并且根据某些列的合并值做条件判断来生成最终值
  6. vscode - 选中多行操作
  7. Laravel之命令
  8. python 奇技淫巧
  9. apache环境下禁止某文件夹内运行PHP脚本、禁止访问文件或目录执行权限的设置方法
  10. .NET CORE 2.0小白笔记(六):