Java面向对象编程(三)

来源:互联网 发布:js get post的用法总结 编辑:程序博客网 时间:2024/06/07 20:43

1、Java不支持多重继承,子类继承父类后,实例化子类对象时,系统会首先实例化父类对象。

2、

class Dialog{    protected String title;    public Dialog(){        System.out.println("父类Dialog的无参构造函数");    }    public Dialog(String title){        this.title=title;        System.out.println("父类Dialog的有参构造函数");    }    public void show(){        System.out.println(title+"对话框提示");    }}class FontDialog extends Dialog{    private String fontName;    public FontDialog(String title,String fontName){        super(title);        //必须写在子类构造函数的第一句,传入参数必须匹配        this.fontName=fontName;        System.out.println("子类FontDialog的有参构造函数");    }}public class Main {    public static void main(String[] args) {        FontDialog fd=new FontDialog("字体", "宋体");        fd.show();    }}

3、

class Dialog{    protected String title;    public Dialog(){        System.out.println("父类Dialog的无参构造函数");    }    public Dialog(String title){        this.title=title;        System.out.println("父类Dialog的有参构造函数");    }    public void show(){        System.out.println(title+"对话框提示");    }}class FontDialog extends Dialog{    private String fontName;    public FontDialog(String title,String fontName){        this.title=title;        //必须写在子类构造函数的第一句,传入参数必须匹配        this.fontName=fontName;        System.out.println("子类FontDialog的有参构造函数");    }}public class Main {    public static void main(String[] args) {        FontDialog fd=new FontDialog("字体", "宋体");        fd.show();    }}

4、如果子类中的函数和父类相同,最后调用的是子类中的方法。这种叫做覆盖或者重写(override)
overload重载
在重写时,子类函数的访问权限不能比父类的更加严格。
可以使用super.函数名,调用父类的成员函数。

5、父类引用可以指向一个子类对象
函数传入的形参可以是父类类型,实际传入的可以是子类对象。
函数的返回类型是父类类型,实际返回的可以是子类对象

6、
instanceof是Java、php的一个二元操作符(运算符),和==,>,<是同一类东西。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。可以用来判断继承中的子类的实例是否为父类的实现。相当于c#中的is操作符。java中的instanceof运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

7、
抽象类必须用abstract修饰
抽象类不能被实例化
抽象函数必须被重写,除非子类也是抽象类
抽象类中也可以有普通成员函数

8、如果一个抽象类中所有函数都是抽象的,我们也可以定义为接口(interface)
接口中只能包含常量和函数
接口中的函数默认都是public访问类型的,
成员变量默认是用public static final标识的(全局静态变量)
class 子类 extends 父类 implements 接口1,接口2,…{}

9、用final来修饰一个类,该类不能被继承
用final来修饰一个函数,在该类被子类继承的情况下,show函数不能被重写

10、

class Customer{    private String name;    public Customer(String name){        this.name=name;    }    //重写从Object继承过来的toString方法    public String toString(){        return this.name;    }    //重写从Object继承过来的equals方法,自定义相等条件    public boolean equals(Customer cus){        if(name.equals(cus.name)){//判断两个字符串是否相等            return true;        }        return false;    }}public class Main {    public static void main(String[] args) {        Customer cus1=new Customer("张三");        System.out.println(cus1);        Customer cus2=new Customer("张三");        System.out.println(cus2);        System.out.println(cus1.equals(cus2));    }}

11、jar
用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files …
选项:
-c 创建新档案
-t 列出档案目录
-x 从档案中提取指定的 (或所有) 文件
-u 更新现有档案
-v 在标准输出中生成详细输出
-f 指定档案文件名
-m 包含指定清单文件中的清单信息
-n 创建新档案后执行 Pack200 规范化
-e 为捆绑到可执行 jar 文件的独立应用程序
指定应用程序入口点
-0 仅存储; 不使用任何 ZIP 压缩
-P 保留文件名中的前导 ‘/’ (绝对路径) 和 “..” (父目录) 组件
-M 不创建条目的清单文件
-i 为指定的 jar 文件生成索引信息
-C 更改为指定的目录并包含以下文件
如果任何文件为目录, 则对其进行递归处理。
清单文件名, 档案文件名和入口点名称的指定顺序
与 ‘m’, ‘f’ 和 ‘e’ 标记的指定顺序相同。

示例 1: 将两个类文件归档到一个名为 classes.jar 的档案中:
jar cvf classes.jar Foo.class Bar.class
示例 2: 使用现有的清单文件 ‘mymanifest’ 并
将 foo/ 目录中的所有文件归档到 ‘classes.jar’ 中:
jar cvfm classes.jar mymanifest -C foo/ .

12、javac
用法: javac
其中, 可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件和注释处理程序的位置
-cp <路径> 指定查找用户类文件和注释处理程序的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖所安装扩展的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-proc:{none,only} 控制是否执行注释处理和/或编译。
-processor [,,…] 要运行的注释处理程序的名称; 绕过默认的搜索进程
-processorpath <路径> 指定查找注释处理程序的位置
-parameters 生成元数据以用于方法参数的反射
-d <目录> 指定放置生成的类文件的位置
-s <目录> 指定放置生成的源文件的位置
-h <目录> 指定放置生成的本机标头文件的位置
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-encoding <编码> 指定源文件使用的字符编码
-source <发行版> 提供与指定发行版的源兼容性
-target <发行版> 生成特定 VM 版本的类文件
-profile <配置文件> 请确保使用的 API 在指定的配置文件中可用
-version 版本信息
-help 输出标准选项的提要
-A关键字[=值] 传递给注释处理程序的选项
-X 输出非标准选项的提要
-J<标记> 直接将 <标记> 传递给运行时系统
-Werror 出现警告时终止编译
@<文件名> 从文件读取选项和文件名

13、java
用法: java [-options] class [args…]
(执行类)
或 java [-options] -jar jarfile [args…]
(执行 jar 文件)
其中选项包括:
-d32 使用 32 位数据模型 (如果可用)
-d64 使用 64 位数据模型 (如果可用)
-server 选择 “server” VM
默认 VM 是 server.
-cp <目录和 zip/jar 文件的类搜索路径>
-classpath <目录和 zip/jar 文件的类搜索路径>
用 ; 分隔的目录, JAR 档案
和 ZIP 档案列表, 用于搜索类文件。
-D<名称>=<值>
设置系统属性
-verbose:[class|gc|jni]
启用详细输出
-version 输出产品版本并退出
-version:<值>
警告: 此功能已过时, 将在
未来发行版中删除。
需要指定的版本才能运行
-showversion 输出产品版本并继续
-jre-restrict-search | -no-jre-restrict-search
警告: 此功能已过时, 将在
未来发行版中删除。
在版本搜索中包括/排除用户专用 JRE
-? -help 输出此帮助消息
-X 输出非标准选项的帮助
-ea[:…|:]
-enableassertions[:…|:]
按指定的粒度启用断言
-da[:…|:]
-disableassertions[:…|:]
禁用具有指定粒度的断言
-esa | -enablesystemassertions
启用系统断言
-dsa | -disablesystemassertions
禁用系统断言
-agentlib:[=<选项>]
加载本机代理库 , 例如 -agentlib:hprof
另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
-agentpath:[=<选项>]
按完整路径名加载本机代理库
-javaagent:[=<选项>]
加载 Java 编程语言代理, 请参阅 java.lang.instrument
-splash:
使用指定的图像显示启动屏幕
有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。

14、java.lang包无需导入
JDK中重要包

  • java.lang
  • java.awt
  • java.awt.event
  • javax.swing
  • java.util
  • javax.io
  • javax.net

15、
j2se7.chm