一:今天完成

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

java面向对象编程知识点总结的更多相关文章

  1. Java面向对象编程基础

    一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ...

  2. java 面向对象编程。。。。

    经过一周的学习(java),总结了许多,对java的理解,java的类型,运用,安装,基础语法,变量,常量,表达式,语句 java从C语言中继承了大量语言特性.java面向对象编程的基本特征,包括继承 ...

  3. 《Java面向对象编程》

    <Java面向对象编程> 第11章 对象的生命周期 11.1  创建对象的方式 用new语句创建对象 运用反射手段,调用java.lang.Class 或者 java.lang.Const ...

  4. JAVA面向对象编程课程设计——网络版单机斗地主

    一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 JAVA面向对象编程课程设计--web版斗地主 吴修恩 JSP界面的 ...

  5. JAVA面向对象编程课程设计——web版斗地主

    一.团队课程设计博客链接 JAVA面向对象编程课程设计--网络版单机斗地主 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记 ...

  6. Java面向对象编程(一)

    由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...

  7. JAVA学习(五):Java面向对象编程基础

    Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目 ...

  8. (一)如何理解java面向对象编程

    哲学中,事物总是螺旋式上升,波浪式前进.因而编程也逐渐向人类更容易理解的方向前进,多年来人们苦苦追求的编程境界 : 高扩展性(extensibility),高复用性(reuseable).java语言 ...

  9. java面向对象编程思想的理解

    1.我们总说java是一门面向对象编程的语言,那什么是面向对象呢? 我是这样理解的,对象是事物存在的实体,如,猪.狗,花早等都是对象,对象由两部分组成.面向对象编程的三大特点:继承,多态,类是封装对象 ...

随机推荐

  1. util.select.js

    ylbtech-JavaScript-util: util.select.js 筛选工具 1.A,JS-效果图返回顶部   1.B,JS-Source Code(源代码)返回顶部 1.B.1, m.y ...

  2. 通过JBoss反序列化(CVE-2017-12149)浅谈Java反序列化漏洞

    前段时间学校学习J2EE,用到了jboss,顺便看了下jboss的反序列化,再浅谈下反序列化漏洞. Java序列化,简而言之就是把java对象转化为字节序列的过程.而反序列话则是再把字节序列恢复为ja ...

  3. INTZ DX format

    http://aras-p.info/texts/D3D9GPUHacks.html 格式 用法 资源 描述 NVIDIA GeForce AMD Radeon 英特尔 阴影映射 D3DFMT_D16 ...

  4. zabbix agent监控主机配置

    zabbix agent监控主机配置 环境说明 系统版本    CentOS 7.2 x86_64 软件版本    zabbix 3.0.18   1.监控zabbix服务器端 1.1 安装zabbi ...

  5. Elasticsearch教程(一),全程直播(小白级别)

    ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...

  6. Android Crash 定位

    本文介绍了如何在 Android 手机发生 Crash 时进行 Log 分析的方法, 它可以帮助测试人员快速定位 Android 手机 Crash 发生的原因,同时给研发人员提供有效修改 Bug 的 ...

  7. JMeter接口测试中文乱码问题总结

    在测试过程中遇到了请求json串中文乱码,所以查看了这篇文章,将字符集修改后,乱码问题已经处理. 转载http://blog.csdn.net/qing_java/article/details/69 ...

  8. POJ 1040 Transportation

    链接:http://poj.org/problem?id=1040 Transportation Time Limit: 1000MS Memory Limit: 10000K Total Submi ...

  9. Linux非阻塞IO(三)非阻塞IO中缓冲区Buffer的实现

    本文我们来实现回射服务器的Buffer.   Buffer的实现   上节提到了非阻塞IO必须具备Buffer.再次将Buffer的设计描述一下: 这里必须补充一点,writeIndex指向空闲空间的 ...

  10. SQL语句练习手册--第一篇

    表架构 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师 ...