15-11-28 java 类和对象的理解(上)
2015-11-28 22:21
387 查看
1. 类是一种抽象的概念,对象是类的一种具体表现形式,是具体的概念.先有类,然后由类来生成对象(Object).对象又叫做实例.
2. 类由两大部分构成:属性及方法.属性一般用名词表示,方法一般用动词表示.
3. 如果一个源文件里定义了多个类,那么这些类中最多只能有一个类是public 的,换句话说定义的多个类可以都不是Public的.
4. 在java中进行方法的传递时,无论传递的是原生类型数据还是引用类型,参数传递方式统一是传值.java中没有传引用的概念.
5. 方法重载(Overload).表示俩个或多个方法名字相同,但方法参数不同.方法参数不同有两层含义:
a) 参数个数不同.
b) 参数类型不同. 注意: 方法的返回值对重载没有任何影响.
6. 构造方法重载: 只需看参数即可.如果想在一个构造方法中调用另外一个构造方法,那么使用this()的方式调用,this()括号中的参数表示目标构造方法的参数.this()必须要作为构造方法的第一条语句,换句话说,this()之前不能有任何可执行的代码.
7. 继承(Inheritance).java是单继承表示一个类只能从另一个类继承(被继承的类叫做父类[基类,base class]继承的类叫做子类), java中的继承使用extends关键字表示.
8. 当生成子类对象时,java默认首先调用寻找父类的不带参数的构造方法.然后执行该构造方法,生成父类的对象.
接下来,再去调用子类的构造方法,生成子类对象.要想生成子类的对象,首先生成父类的对象.没有父类对象
就没有子类对象.
9. super表示对父类对象的使用,this表示对当前类的使用.
10. 如果子类使用super()显示调用父类的某个构造方法,那么在执行的时候就会寻找与super()所对应的构造方法而不会再去寻找父类的不带参数的构造方法.与this一样,super也必须作为构造方法的第一条语句,super之前不能有任何可执行的代码.
11. 关于继承的3点:
1) 父类有的,子类也有.
2) 父类没有的,子类可以增加.
3) 父类有的,子类可以改变.
12. 关于继承的注意事项
a) 构造方法不能被继承
b) 方法和属性可以被继承
c) 子类的构造方法隐式的调用父类不带参数的构造方法
d) 当父类没有不带参数的构造方法,子类需要使用super来显式调用父类的构造方法,super指的是对父类的引用.
e) super关键字必须是构造方法中的第一行语句.
13. 方法重写(Override): 子类与父类的方法返回类型一样,方法名称一样,参数一样,这样我们说子类与父类的方法构成了重写关系.
14. 方法重写与方法重载之间的关系: 重载发生在一个同一个类内部的两个或多个方法.重写发生在父类与子类之间.
15. 当两个方法形成重写关系时,可以在子类方法中通过super.run();形式调用父类的run()方法,其中super.run()不必放在第一行语句,因为此时父类对象已经构造完毕,先调用父类的run()方法还是先调用子类的run方法是根据程序的逻辑决定的.
16. 在定义一个类的时候,如果没有显式指定该类的父类,那么该类就会继承于java.lang.Object类(JDK提供的一个类,Object类是java中所有类的直接或间接父类).
17. 多态(Polymorphism): 我们说子类就是父类(玫瑰是花,男人是人),因此多态的意思是:父类型的引用可以指向子类的对象.
18. 多态: 父类型的引用可以指向子类型的对象.
19. Parent p = new Child();当使用多态方式调用时,首先检查父类中是否有sing()方法,如果没有则编译错误;如果有再去调用子类的sing()方法.
20. 多态类型转换的两种方式:
a) 向上类型转换(upcast): 比如说将Cat类型转换为Animal类型,即将子类转换为父类型.对于向上类型转换,不需要显式指定.
b) 向下类型转换(downcast): 比如将Animal类型转换为子类型.对于向下类型转换,必须要显式指定(必须要使用强制类型转换).例poly3.
(本文中一些方法是例子)
2. 类由两大部分构成:属性及方法.属性一般用名词表示,方法一般用动词表示.
3. 如果一个源文件里定义了多个类,那么这些类中最多只能有一个类是public 的,换句话说定义的多个类可以都不是Public的.
4. 在java中进行方法的传递时,无论传递的是原生类型数据还是引用类型,参数传递方式统一是传值.java中没有传引用的概念.
5. 方法重载(Overload).表示俩个或多个方法名字相同,但方法参数不同.方法参数不同有两层含义:
a) 参数个数不同.
b) 参数类型不同. 注意: 方法的返回值对重载没有任何影响.
6. 构造方法重载: 只需看参数即可.如果想在一个构造方法中调用另外一个构造方法,那么使用this()的方式调用,this()括号中的参数表示目标构造方法的参数.this()必须要作为构造方法的第一条语句,换句话说,this()之前不能有任何可执行的代码.
7. 继承(Inheritance).java是单继承表示一个类只能从另一个类继承(被继承的类叫做父类[基类,base class]继承的类叫做子类), java中的继承使用extends关键字表示.
8. 当生成子类对象时,java默认首先调用寻找父类的不带参数的构造方法.然后执行该构造方法,生成父类的对象.
接下来,再去调用子类的构造方法,生成子类对象.要想生成子类的对象,首先生成父类的对象.没有父类对象
就没有子类对象.
9. super表示对父类对象的使用,this表示对当前类的使用.
10. 如果子类使用super()显示调用父类的某个构造方法,那么在执行的时候就会寻找与super()所对应的构造方法而不会再去寻找父类的不带参数的构造方法.与this一样,super也必须作为构造方法的第一条语句,super之前不能有任何可执行的代码.
11. 关于继承的3点:
1) 父类有的,子类也有.
2) 父类没有的,子类可以增加.
3) 父类有的,子类可以改变.
12. 关于继承的注意事项
a) 构造方法不能被继承
b) 方法和属性可以被继承
c) 子类的构造方法隐式的调用父类不带参数的构造方法
d) 当父类没有不带参数的构造方法,子类需要使用super来显式调用父类的构造方法,super指的是对父类的引用.
e) super关键字必须是构造方法中的第一行语句.
13. 方法重写(Override): 子类与父类的方法返回类型一样,方法名称一样,参数一样,这样我们说子类与父类的方法构成了重写关系.
14. 方法重写与方法重载之间的关系: 重载发生在一个同一个类内部的两个或多个方法.重写发生在父类与子类之间.
15. 当两个方法形成重写关系时,可以在子类方法中通过super.run();形式调用父类的run()方法,其中super.run()不必放在第一行语句,因为此时父类对象已经构造完毕,先调用父类的run()方法还是先调用子类的run方法是根据程序的逻辑决定的.
16. 在定义一个类的时候,如果没有显式指定该类的父类,那么该类就会继承于java.lang.Object类(JDK提供的一个类,Object类是java中所有类的直接或间接父类).
17. 多态(Polymorphism): 我们说子类就是父类(玫瑰是花,男人是人),因此多态的意思是:父类型的引用可以指向子类的对象.
18. 多态: 父类型的引用可以指向子类型的对象.
19. Parent p = new Child();当使用多态方式调用时,首先检查父类中是否有sing()方法,如果没有则编译错误;如果有再去调用子类的sing()方法.
20. 多态类型转换的两种方式:
a) 向上类型转换(upcast): 比如说将Cat类型转换为Animal类型,即将子类转换为父类型.对于向上类型转换,不需要显式指定.
b) 向下类型转换(downcast): 比如将Animal类型转换为子类型.对于向下类型转换,必须要显式指定(必须要使用强制类型转换).例poly3.
public class Poly3 { public static void main(String[] args) { Fruit f = new Pear(); Pear p = (Pear)f; p.grow(); } } class Fruit { public void run() { System.out.println("fruit is running"); } } class Pear extends Fruit { public void run() { System.out.println("pear is running"); } public void grow() { System.out.println("pear is growing"); } }
(本文中一些方法是例子)
相关文章推荐
- 第二个spring冲刺第5天
- java中ThreadLoacl解析
- 教你学会java基础多线程系列文章之中级篇(一)
- Spring MVC拦截器+注解方式实现防止表单重复提交
- SpringMVC中自定义参数解析器及内置类型的绑定
- java中String new和直接赋值的区别
- Java中的基本数据类型转换
- AES —— JAVA中对称加密和解密
- Java虚拟机运行时数据区
- Struts2基础复习系列(1)
- Java的HashMap使用例程
- Java解压缩ZIP文件
- HDU-A+B Problem 的Java题解 用Java语言做ACM的注意事项
- Java多线程两种实现
- Java、Hibernate(JPA)注解大全
- Java 中的包装类
- java继承中初始化的顺序
- springMVC指定跳转viewName跳转404找不到页面
- Java泛型简介
- Java之查找html文件当中的所有标签