面向对象概述

1.static是一个关键字,用于修饰成员变量和成员方法的
被static修饰的成员属于类,不属于这个类的某个对象.
被static修饰的成员可以通圌过类名直接访问
访问静态成员的格式:
类名.成员变量名
类名.成员方法名
静态的加载优先于对象,随着类的加载而加载

2.static的特点:被所有的对象所共享
可以使用类名直接调用
静态的加载优先于对象
随着类的加载而加载,随着类的结束而消失
3.static的注意事项:静态方法可以调用静态的成员变量
静态方法也可以调用静态的成员方法
静态方法不能调用非静态的成员变量和非静态的成员方法
静态方法只能调用静态的成员

非静态的方法可以调用静态的成员变量
非静态的方法也可以调用静态的成员方法
非静态的方法可以调用非静态的成员变量
非静态的方法也可以调用非静态的成员方法

静态的成员中没有this和super这个关键字(this和super是对象的引用)

Math类中的成员全是静态的,可以直接用Math.**调用对应的方法
4.代码块:静态代码块:随着类的加载而加载,只加载一次,加载类时需要做的一些初始化,比如加载驱动.

构造代码块:提取构造方法中的共性,每次创建对象都会执行,并且在执行构造方法之前执行,可以给所有对象进行初始化

局部代码块: 存在于方法中,控圌制变量的生命周期(也叫作用域).

只有创建对象了才会执行构造代码块和构造方法,但是静态代码块只要类一加载就会加载,但是只会加载一次
5.继承:多个类有共同的成员变量和成员方法,抽取到一个父类中,让这多个类去继承这个父类,我们的多个类就可以获取到父类中的成员了.
6.继承的特点:只能单一继承和多层继承,不能多继承.
比如:儿子可以继承父亲,儿子也可以继承爷爷,但是儿子不能同时继承父亲和爷爷.
子类只能获取父类非私有的成员
子父类中成员变量的名字一样时,调用子类的成员变量
子父类中成员变量的名字不一样时,调用父类的成员变量,如果父类也没有就会报错.
this关键字调用当前类中的成员,super关键字调用父类中的成员.
遵从:就近原则.
7.继承中成员方法的特点
方法的重写:在子父类中,子类的方法和父类的方法完全一样,子类就重写了父类的方法.
当子类重写了父类的方法后, 使用子类对象调用的就是子类的方法.
方法的重载:在一个类中,有多个重名的方法,但是其参赛不一样,和返回值无关.
8.this和super关键字在构造方法的第一行,两个关键字不能同时存在.如果调用的是this的构造
方法,会默认的先去调用父类的无参构造,完成了以后再去调用子类的构造方法
9.抽象:关键字abstract,用于修饰类和方法.
抽象方法:不同类的方法是相似的,但是具体的内容又不太一样,我们只能抽取它的声明,没有具体的方法体.
抽象类:抽象方法的类必须是抽象类
一个类继承了抽象类,就必须重写抽象类所有的抽象方法,否则这个类本身也是抽象的.
10:关于继承的总结:
1.子类继承了父类,就拥有了父类的属性和行为,就可以获取父类的成员变量和成员方法
2.只能单一继承和多层继承,不能多继承
3.子类继承了父类,就可以获取到父类的成员,也可以拥有自己特有的属性和行为
4.如果子类和父类的方法完全一样,子类就重写了父类的方法,使用子类调用的就是子类的方法.
5.如果父类是抽象类,子类继承了父类,就必须重写父类所有的抽象方法,否则子类本身也是一个抽象类.(因为继承了抽象类,就必须重写它的抽象方法,然后具体化,否则本身也是抽象的,就不需要具体话,也就不不要重写方法.)
11. 抽象类的特点:
1.抽象方法只能在抽象类中
2.抽象类和抽象方法必须被abstract修饰
3.抽象类不能创建对象
4.抽象类中可以有抽象方法也可以有非抽象方法.(抽象类中可以是变量也可以是常量)
(变量:int a=10,常量:puВLic static final int a=10)
12.静态变量:
定义位置:定义在类中方法外
所在内存区域:方法区
生命周期:随着类的加载而加载
特点:无论创建多个个对象,静态变量尽在方法区中,并且只有一份
非静态变量:
定义位置;定义在类中方法外
所在内存区域:堆内存中
生命周期:随着类的创建而加载
特点:每创建一个对象,堆中的对象中就有一份非静态变量
13.构造代码块:
优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化
每创建一个对象就会执行一次构造代码块
14.静态代码块:
优先于主方法执行也优先于构造代码块执行,当以任意形式第一次使用到该类时执行
该类不管创建多少个对象,静态代码块只执行一次
用于给静态成员变量赋值,用来给类进行初始化. (static不能给局部变量赋值)
15.继承的特点:
1.只能单一继承和多层继承
例子:class 儿子 extends 父亲 {} //单一继承
class 爷爷{}
class 父亲 extends 爷爷{}
class 儿子 extends 父亲{}
2.可以多个子类继承一个父类
例子: class Animal{}
class Dog extends Animal{}
class Cat extends Animal{}
3.子类和父类是一种相对概念,也就是说一个类是某个父类的同时,也可以是另外一个类的子类
16.继承中成员变量的特点:
1.子类只能获取父类非私有的成员 (private 私有的)
2.子父类中成员变量的名字不一样时直接获取父类的成员变量
3.子父类中成员变量的名字一样时获取的是子类的成员变量

17.继承中成员方法的特点:
1.子类中没有这个方法,调用父类的
2.子类中重写了这个方法,调用子类的
3.如果父类中也没有,就会报错
方法的重写:在子父类中,子类的方法和父类的完全一样,子类就重写了父类的方法,当子类重写了父类的方法之后,使用子类对象调用的就是子类的方法
18.方法重写的应用场景和注意事项
方法重写的应用场景:当父类的方法不能满足子类使用的时候,既可以保留父类的功能,还可以有自己特有的功能
方法重写的注意事项:
不可以重写父类私有的成员方法
子类重写父类方法时,权限必须大于等于父类方法的权限
权限修饰符的大写顺序: puВLic>protected>默认的(不写)>private
19.this和super关键字的区别
this:是当前对象的引用
this.xxx调用当前类的成员变量
this.()调用当前类的无参构造方法
this.(xxx)调用当前类的有参构造方法
在子类的构造方法第一行调用子类的其他构造方法
super:是子类对象指向父类的引用
super.xxx调用父类的成员变量
super.()调用父类的无参构造方法
super(xxx)调用父类的有参构造方法
在子类的构造方法第一行调用父类的构造方法
20.抽象:关键字 abstract,用于修饰方法和类
例子: puВLic abstract class Animal{
int age=10;
puВLic abstract void eat();
puВLic abstract void sleep();
}
21.抽象的特点:
1.抽象方法只能在抽象类里面
2.抽象方法和抽象类必须用abstract修饰
3.抽象类不能创建对象
4.抽象类中可以有抽象方法和非抽象方法
5.抽象类和类的关系是继承
6.一个类继承了抽象类要么重写抽象类的所有方法,要么自己本身也是抽象类
7.abstract不能和final共存,因为final不能被重写.private是私有的,不能被继承.static修饰的方法是静态方法,可以直接通圌过类名调用,没意义.
22.抽象类的成员特点:
成员变量:可以有成员变量也可以有常量
成员方法:可以有抽象方法也可以有非抽象方法
final可以修饰类,成员变量和成员方法
23.接口:接口是一个比抽象类还抽象的类,接口里面所有的方法都是抽象方法,接口和类是实现关系
24.接口的成员特点:
成员方法只能是常量,ina a=10;//这里的变量是常量,默认为puВLic static final int age=10;这里的puВLic是权限修饰符,static和final是状态修饰符,int是定义符
只能有抽象方法
默认使用puВLic abstract 修饰方法
25.接口不能创建对象(不能实例化),类和接口的关系的实现关系,接口和接口是继承关系,一个类实现必须实现它的所有方法.
注意:接口是不可能继承类,因为接口圌中没有方法体,也不能创建对象.
类与类:继承关系,单一继承和多层继承,然后子类去具体实现
类于接口:实现
接口与接口:继承,可以多继承
26.抽象类和接口的共性都是不断提取出来的抽象的概念
抽象类中可以有构造方法,因为可以被子类去继承,然后子类创建对象去调用父类中构造方法
接口圌中没有构造方法
27.匿名对象
没有名字的对象,也就是没有变量引用的对象
当方法只调用一次的时候可以使用匿名对象
匿名对面可以调用成员变量并赋值,但是赋值没有圌意义
可以当作参数进行传递,但是无法在传参之前做其他的事情(比如赋值)
28.final:是一个状态修饰符,可以修饰类,成员变量和成员方法
final修饰的类不能被继承,不能有子类
例子:太监没有儿子,但是可以有爸爸
final修饰的成员变量不能被修改,所有是常量
final修饰的成员方法不能被重写
29.包的特点:
可以有多层,中间用.隔开
不同包下的文件名可以重复
包的声明必须在第一行
30.不同包直接的互相访问:
1.使用类的全名
2.使用关键字import将类导入
3.类的全名:包名.类名
31.权限修饰符:puВLic > protected > 默认的 > private
puВLic:可用于当前类,相同包下的类,不同包下的类
protected:可用于当前类,相同包下不同的类
默认的:可用于当前类,相同包下不同的类(当前包下使用)
private:可用于当前类(让子类使用)
32.内部类分类:成员内部类
局部内部类
匿名内部类
33.成员内部类的修饰符:
可以使用权限修饰符修饰成员内部类,但是如果使用私有来修饰,则无法在其他类中访问
我们可以使用static来修饰成员内部类,不用再创建对象了
34.匿名内部类:
可以把匿名内部类看成是一个没有名字的局部内部类
定义在方法中
必须在定义匿名内部类的时候创建它的对象
格式: new 类/接口() {
如果是创建了继承这个类的子类对象,我们可以重写父类的方法
如果是创建了实现这个接口的子类对象,我们必须实现这个接口的所有方法

};
原理:实际是创建了继承这个类的子类对象或创建了实现这个接口的子类对象

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-07-25 14:33  java小大牛  阅读(119)  评论(0编辑  收藏  举报