java面向对象程序设计
修饰符 class 类名{
类的成员
}
===============
修饰符
public|private|protected
abstract|final
static
public class 公共类
1.一个java文件只能有一个公共
2.java文件的名称必须与公共类的类名相同
abstract class 抽象类
1.不能实例化对象
2.可以包含抽象方法
3.一般用于做父类
public abstract class 公共抽象类
final class 终态类
1.不能被继承
public final class 公共终态类
static class 静态类
1.static只能作为内部类或匿名类的修饰符
===============
类的成员:
1.成员变量(属性,字段,field)
2.成员方法(method)
3.构造器(构造方法,构造函数, structer)
4.类变量(静态变量)
5.类方法(静态方法)
6.内部类
7.静态代码块
8.成员代码块
例如:
class Demo{
private int num;//成员变量
//成员方法
public int getNum(){
return this.num;
}
//构造器
public Demo(){
...
}
//类变量
public static String str;
//类方法
public static void test(){
...
}
//内部类
class InternalDemo{
...
}
//静态代码块
static{
System.out.println();
...
}
//成员代码块
{
for(int i=0; i<10; i++){
System.out.println(i);
}
}
}
每个成员有什么用?
怎么调用?
什么时候执行?
类和对象:
定义类
修饰符 class 类名{
八个成员:成员变量,成员方法,构造器,
类变量,类方法,内部类,静态代码块,非静态代码块
//成员变量:保存对象的属性值
修饰符 类型 变量名;
//类变量:保存类的属性值(共享)
修饰符 static 类型 变量名;
//成员非抽象方法:对象的行为(访问接口)
修饰符 类型 方法名{
...
}
//成员抽象方法:对象的行为(访问接口,子类实现具体的方法
修饰符 abstract 类型 方法名;
//类非抽象方法:类的行为(访问接口)
修饰符 static 类型 方法名{
...
}
//类抽象方法:类的行为(访问接口,子类实现具体的方法)
修饰符 static abstract 类型 方法名;
//构造器(与类名同名):实例化对象
修饰符 构造器名{
...
new 内部类();
}
//内部类
修饰符 class 类名{
成员
}
//静态代码块:初始化静态成员,第一次实例化对象自动执行,仅执行一次
static{
...
}
//非静态代码块:初始化成员,每次实例化对象自动执行
{
...
}
}
==========================
实例化对象
类名 对象名 = new 构造器();
注意:
抽象类和接口不能实例化对象,可用父类对象引用子实例.
例如:
1.父类型 对象名 = new 子类构造器();
2.有方法:
void fun(父类型 参数名){...}
调用
fun(子类对象);
==============================
发消息(调用方法和属性)
类变量和类方法(有static修饰的属性和方法)
类名.变量
类名.方法([参数列表])
对象成员变量和对象成员方法(没有static修饰的属性和方法)
对象.变量
对象.方法([参数列表])
修饰符与关键字:
public 修饰类,类中所有成员(除静态和非静态代码块)
protected 修饰内部类,类中所有成员(除静态,非静态代码块和类 )
private 修饰内部类,类中所有成员(除静态,非静态代码块和类)
static 修饰内部类,类变量,类方法,静态代码块。
abstract 修饰类,内部类,成员方法,类方法
final 修饰类, 内部类,方法,变量,局部变量, 参数
new: 运算符,实例化对象,类型 变量名 = new 构造器(),返回一个对象.
instanceof: 运算符,boolean 变量名 = 对象 instanceof 类型,返回一个布尔值, 可以做条件。
this:当前对象自身的引用.注意,不能用在静态代码块和静态方法中.
super:当前父类对象的引用.
注意:
1.不能用在静态代码块和静态方法中。
2.调用父构造器, super([参数])。
3.必须是第一条代码。
extends:继承关键字, A有一个子类B, class B extends A{}
package:打包,必须是源代码中的第一行,且只有一个package,可省略。
import:导入,引用除java.lang包之外的其他包。
OOP的三大特征:
封装:隐藏不必要细节,1.独立的运行单元;2.加访问修饰符。
继承:class 子类名 extends 父类名, 子类继承父类中所有属性和方法.
多态:同一服务(方法名相同),不同的行为(执行不同的代码块)。
主要体现:
1.重载:overLoad 编译时多态,方法名相同,参数不同(类型,个数,顺序)
2.重写:override 运行时多态,子类重写父类同名方法,方法名,参数,返回类型相同,访问修饰符大于等于父类指定的修饰符
高层不依赖低层,依赖抽象
代码例子