java面向对象学习整理

1.所有类是引用类型,类中有构造器,成员变量和方法。static修饰的成员 不能访问没有static修饰的成员。

2.java通过new来调用构造器,从而返回该类的实例。new语句构造出来的对象都放在堆内存,java里所有的引用类型都是指针。局部变量存储在栈中。方法执行完毕以后,为这个方法分配的所有的局部变量的内存空间全部消失!!静态变量存放在数据区。

3.引用变量里存放的仅仅是一个引用,它指向实际的对象。Person类型的变量实际上是一个引用,它被存放在栈内存里,指向实际的Person对象;而真正的Person对象则存放在堆内存中。java里的引用就是C里的指针。当一个对象被创建成功以后,这个对象将保存在堆内存中。java的垃圾回收机制。

4.使用this引用调用run()方法的对象。java允许一个成员直接调用另一个成员,可以省略this前缀。

5.static修饰的方法中不能使用this引用。递归一定要向已知方向递归。

6.如果同一个类中包含了两个或两个以上方法的方法名相同,但形参列表不同,则被称为方法重载。

7.如果通过一个实例修改了类变量 的值,由于这个类变量并不属于它,而是属于它对应的类。局部变量除了形参之外,都必须显式初始化。

8.当程序需要访问类变量时,尽量使用类作为主调,而不要使用对象作为主调,这样可以避免程序产生歧义,提高程序的可读性。

9.使用import导入类。一旦程序员提供了自定义的构造器,系统就不再提供默认的构造器。

10.通过this调用另一个重载的构造器的初始化代码。在软件开发里有一个规则:不要把相同的代码段书写两次以上!

11.继承:java的继承具有单继承的特点,每个子类只有一个直接父类。java的继承通过extends关键字来实现。

class Child extends Parent { }

12.子类包含与父类同名方法的现象被称为方法重写,也被称为方法覆盖。

13.如果需要在子类方法中调用父类被覆盖的实例方法,则可使用super限定来调用父类被覆盖的实例方法。

14.在进行强制类型转换之前,先用instanceof运算符判断是否可以成功转换。

15.当创建java对象时,系统总是先调用该类里定义的初始化块,如果一个类里定义了2个普通初始化块,则前面定义的初始化块先执行,后面定义的初始化块后执行。

16.把字符串类型的值转换为基本类型的值有两种方式。利用包装类提供的parseXXX(String s)静态方法(除了character之外的所有包装类都提供了该方法),利用包装类提供的Xxx(String s)构造器。

String intStr="123";int it1=Integer.parseInt(intStr);

String ftStr=String.valueOf(2.345f);

String intStr=5+"";

17.缓存是一种非常优秀的设计模式,在java、javaEE平台的许多地方都会通过缓存来提高系统的运行性能。

18.toString()方法是一种非常特殊的方法,当程序员直接打印该对象时,用以告诉外界该对象具有的状态信息。

19.final修饰的类变量,要么在定义该类变量时指定 初始值,要么在静态初始化块中为该类变量指定初始值。

19.==不可用于比较类型上没有父子关系的两个对象。(str1.equals(str2));

20.当通过对象来访问类变量时,系统会在底层转换为通过该类来访问类变量。

21.java会使用常量池来管理曾经用过的字符串直接量。

22.final修饰的类不可被继承。

23.Java语言中除基本类型之外的变量类型都称之为引用类型。Java中的对象是通过引用对其操作的。

24.类名的首字母大写,变量名和方法名的首字母小写,运用驼峰标识。

25.方法的重载是指一个类中可以定义有相同的名字,相同的返回值,但参数不同(参数个数或者参数类型)的多个方法。调用时,会根据不同的参数表选择对应的方法。

26.静态变量存放在数据区,属于整个类,不属于单独的某个对象。任何对象都可以访问静态变量,访问的时候,访问的都是同一块内存。类名.?也可以访问。字符串常量存放在数据区。字符串也是引用类型,字符串也是一对象。

27.package com.abc.java140;

     import com.abc.java140.*;

28.private权限只有在该类里的其他方法可以访问。即使父类私有的东西也可以被子类继承,但不能直接访问。就是拥有私有变量的所有权,但是没有使用权。

29.重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。重写方法不能使用比被重写方法更严格的访问权限。

30.this指的是当前对象,在Java类中使用super来引用基类的成分。

31.继承中的构造方法:子类的构造过程中必须调用其基类的构造方法。子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法,使用this(argument_list)调用本类的另外的构造方法。如果调用super,必须写在子类构造方法的第一行。如果子类的构造方法中没有显示地调用基类构造方法,则系统默认调用基类无参数的构造方法。如果子类构造方法中既没有显示调用基类构造方法,而基类中又没有无参的构造方法,则编译出错。

32.Object类是所有Java类的根基类,如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类。

33.对象转型:1.一个基类的引用类型变量可以“指向”其子类的对象。2.一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。3.可以使用 引用变量 instanceof 类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。4.子类的对象可以当作基类的对象来使用称作向上转型,反之称为向下转型。

34.动态绑定和多态(面向对象最核心的机制):动态绑定是指在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际的类型调用相应的方法。根据实际当中new出来的类型来判断enjoy()方法到底调用哪一个。调用这个方法的时候,只要这个方法重写了,实际当中调用哪个,要看实际当中new的是什么对象。可扩展性达到最好。方法是作为单独的一块区域里面code seg,

三个必要条件:1.要有继承 2.要有重写 3.父类引用指向子类对象。

35.abstract:含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。抽象类不能被实例化!!抽象方法只需声明,而不需实现。

public abstract void enjoy();

36.final的变量的值不能够被改变,final的方法不能够被重写,final的类不能够被继承。

37.接口(interface):多个无关的类可以实现同一个接口。一个类可以实现多个无关的接口。与继承关系类似,接口与实现类之间存在多态性!!!接口是抽象方法和常量值的定义的集合。

从本质上讲,接口是一种特殊的抽象类!!这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。

public interface Runner {}

class Student implements Runner {}

interface A extends Protectable {}

class Pet extends Animal implements Valuable ,Protectable {}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值