学习Java面向对象的个人笔记

1. 匿名类对象:创建的类的对象是匿名的

1). 当我们只需要一次调用类的对象时,我们就可以考虑使用匿名的方式创建类的对象:new Test().show(),不赋值给一个变量,Java自动回收这个类的对象

2). 特点:创建的匿名类的对象只能够调用一次

2.可变个数的形参的方法:

1). 格式,对于方法的形参:数据类型 ... 形参名(public void getSum(String ... arg){ })

2). 可变个数的形参的方法与同名的方法之间构成重载

3). 可变个数的形参在调用时,个数从0开始到无穷多个都可以

4). 使用可变多个形参的方法与方法的形参使用数组是一致的

5). 若方法中存在可变个数的形参,那么一定要声明在方法形参的最后

3. 子类对象的多态性,父类的引用指向子类对象:Person p=new Man(); 向上转型

1). 虚拟方法调用:通过父类的引用指向子类的对象实体,当调用方法时,实际执行的是子类重写父类的方法

2). 程序运行分为编译状态和运行状态。对于多态性来说,编译时,"看左边",将此引用变量理解为父类的类型。运行时,"看右边",关注与真正对象的实体:子类的对象。那么执行的方法就是子类重写的。 

3). 若想调用子类的方法,使用强转符:Man m=(Man)P;上下转型

4. instanceof:对象a instanceof 类A。判断对象a是否是类A的一个实例,返回值为boolean类型

5. 属性不存在多态性    

6. static 修饰方法,内部可以调用静态的属性或者静态的方法,而不能调用非静态的属性和方法,反之非静态可以调用静态的属性和方法,原因是静态的生命周期比非静态的要早

7.代码块,如果有修饰符,只能使用static

1). 非静态代码块:

①. 可以对类的属性(静态或非静态,方法也是)进行初始化操作

{
   ID="1001";
   name="zhangsan";
}

②. 里面可以有输出语句

{
   ID="1001";
   name="zhangsan";
   System.out.println("显示的内容");
}

③. 一个类中可以有多个非静态的代码块,多个代码块之间按照顺序结构执行

④. 每创建一个类的对象,非静态代码就加载一次

⑤. 非静态代码块的执行要早于构造器

2). 静态代码块:

①. 里面可以有输出语句

②. 随着类的加载而加载,而且只被加载一次

③. 多个静态代码块之间按照顺序结构执行

④. 静态代码块的执行要早于非静态代码块的执行

⑤. 静态的代码块中只能执行静态的结构(类属性,类方法)

8.final 关键字 可以用来修饰类、属性、方法

1). final 修饰类:这个类不能被继承。如:String 类、StringBuffer 类、System 类

2). final 修饰方法:不能被重写

3). final 修饰属性:此属性就是一个常量,一旦初始化之后,不可再被复制。

4). 变量用 static final 修饰:全局常量

9.抽象 abstract

1).abstract 修饰类:抽象类

①. 不可被实例化

②. 抽象类有构造器(凡是类都有构造器)

③. 抽象方法所在的类,一定是抽象类

④. 抽象类中可以没有抽象方法

2). abstract 修饰方法:抽象方法

①. 格式:没有方法体,包括{},如 public abstract void eat();

②. 抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写抽象方法

③. 若子类继承抽象类,并且重写了所有的抽象方法,则此类事一个"实体类",即可实例化

④. 若子类继承抽象类,并没有重写所有的抽象方法,意味着此类中仍有抽象方法,则此类必须声明为抽象的

3). abstract 不能用来修饰属性、构造器、private、final、static

①. abstract int name 属性不能覆盖

②. public abstract A1(){} 构造器不能被重写

③. public abstract final void A1(); 使用抽象就是用来重写的,而final是不允许重写的

④. public abstract static void A1();  static 可以直接通过类来调用,而声明为抽象,没有方法体

4). 抽象类的定义:是用来模型化那些父类无法确定全部实现,而是由其子类提供  具体实现的对象的类

10. 接口

1). 有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果

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

3). 是与类并行的一个概念

①. 接口可以看做是一个特殊的抽象类。是常量于抽象方法的一个集合。不能包含常量、一般的方法。

②. 接口没有构造器

③. 接口定义的就是一种功能,此功能可以被类所实现(implements)

④. 实现接口的类,必须要重写其中的所有抽象方法,方可实例化。若没有,则此类扔为一个抽象类

⑤. 类可以实现多个接口。Java 中类的继承是单继承

⑥. 接口与接口之间也是继承关系,而且可以实现多继承

⑦. 接口也有多态性

4). 通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系

5). 通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能。

6). 接口主要用来定义规范。接触耦合关系

11. 内部类

1). 创建内部类

//创建静态内部类的对象,可以直接通过外部类调用静态内部类的构造器
Person.Dog d = new Person.Dog();
//创建非静态内部类的对象。必须先创建外部类的对象,通过外部类的对象调用内部类的构造器
Person p = new Person();
Person.Bird b = p.new Bird();

2). 调用内外部类的属性(重名时)

//Person 中 有一个内部类 Bird
//在Bird中添加 setName 方法,并且调用
public void setName(String name){
    System.out.printIn(name)// 形参的 name
    System.out.printIn(this.name)// Bird 的 name
    System.out.printIn(Person.this.name)// Person 的 name
}

12. 异常

1). 异常事件分为两类:Error 和 Exception

Error:Java 虚拟机无法解决的验证问题。如:JVM 系统内部错误、资源耗尽等严重情况。一般不编写针对性的代码进行处理

Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使针对性的代码进行处理。例如:空指针访问,试图读取不存在的文件,网络连接中断

2). 第二种可以用try catch finally 处理

猜你喜欢

转载自blog.csdn.net/qq_36797286/article/details/81014139
今日推荐