我的java学习心得(1)
初学java,昨天捧到一本书,现在翻了一半了,因为有些c++基础,看起来比较顺利,基本的东西差不多,只不过有些地方不一样,如virtual function和多态,最大的感觉就是编译慢了一点(不要说我的机器不行哦),顺便作了一些笔记,是自己的理解,大家帮忙看看,不对的地方多指教!
高手看了不要笑啊,太基础了,而且我是针对和c++中的不一样来做笔记的,对我来说有针对性!
再一次,大家多指教!
1.Java允许从一个构造函数调用另一个构造函数
通过this()关键字来调用。
2.private ctor和public ctor
private ctor无法在该构造函数所在的类以外的地方被调用。
3.Class Inheritance通过关键字extends来表示
class CCircle()
{
.......
}
class CCoin extends CCircle
{
.........
}
4.SubClass调用父类(baseclass)的ctor 通过super()关键字
super()必须写在子类构造函数的第一行
5.this()与super()的不同:前者是在同一个类内,后者是在子类中调用父类的ctor
6.statci变量的初始化是在类内,不同于c++
7.子类内调用父类的变量通过super关键字,而在c++通过scope resolution(::)
关键字this与其类似,可用this来调用实例变量。
8.防止子类覆盖(改写)父类的函数,可通过关键字final来实现.
class A
{
public final void show
{
}
}
class B extends A
{
public void show //编译出错
{
}
}
9.如果在data member前面加上final,就成为常量constant
10.在java中,如果定义一个类没有指定一个父类,则java会自动赋值该类继承自
Object这个类,而成为Object的子类(Object是置于java.lang类库里的一个类)。
在Object里定义了一些的method,常用的有:
Class getClass() //取得调用getClass()的对象所属的类
Boolean equals(Object obj) //两个类变量所指的是否为同一个对象
String toString() //将调用toString()的对象内容转成字符串
11.抽象类的定义通过 abstract关键字开头,而在c++中是通过pure virtual function
实现
abstract class A
{
.......//一般的method
abstract int show(); //abstract method ,only declaration here,we must
//write out definiton in derived class
}
abstract class CShape //定义抽象类CShape
{
.........
abstract void show(); // 只声明show(),但没有定义处理方法
}
class CRectangle extends CShape // 定义子类CRectangle
{
............
public void show(){ // 明确定义继承自抽象类的Show() method
System.out.print("color="+color+", ");
System.out.println("area="+width*height);
}
}
12. 在abstract class内不能定义ctor