Java面向对象设计

面向对象设计:

    • 继承性:
    • 多态性
    • 封装性
    • 抽象类与接口
    • static 和 final
    • 内部类
    • 方法调用的值传递方式

每个类都有属性即变量,和方法。
每个类都有一个构造函数,其函数名与类名相同。构造函数是在创建类的对象后自动执行,通常用于初始化数据。
方法的调用:类的方法通过类的对象调用:对象.方法名

继承性:

  • 格式: public class 类名 extends 父类名
    {
    }
    子类继承父类后,子类可以共享父类的public和protected的属性和方法。子类也可以重写父类的方法来覆盖。子类可以有自己的属性和方法

类的实例化(创建类的对象)
父类对象可以父类实例化创建
子类对象可以通过子类实例化创建,有两种方式


class J_Employee{
	public int m_workYear;
	public J_Employee() {
		m_workYear = 1;
	}
	
	public void show() {
		System.out.println("这里是父类!");
	}
}

public class J_Teacher extends J_Employee {
	public int m_classHour;	//授课时间
	
	public J_Teacher() {
		m_classHour = 96;
	}
	
	public void show() {
		System.out.println("这里是子类");
	}
	
	
	public static void main(String args[]) {
		J_Employ tom1 = new J_Employee();	//父类对象
		J_Teacher tom2 = new J_Teacher();	//子类对象
		J_Employee tom3 = new J_Teacher(); 	//子类对象
		tom1.show();
		tom2.show();
		tom3.show();
	}
}

判断对象是否属于某个类:对象名 instanceof() 类名

多态性

静态多态性:同名函数的参数类型不同或参数数目不同。
动态多态性:子类继承父类的方法后,重写同名方法会覆盖父类的方法。
子类中调用父类方法或父类属性时,通过super.方法名 来调用

格式:
package 包名;//现在位置的包
import 包名.*; //导入包

封装性

封装性指的是类成员的访问权限,有public,protected,default,private

访问控制模式 在同一个类内 在同一个包内 子类 所有类
公共模式:public 允许访问 允许访问 允许访问 允许访问
保护模式:protected 允许访问 允许访问 允许访问 不能
默认模式:default 允许访问 允许访问
私有模式:private 允许访问

抽象类与接口

抽象类是只写类的具有什么属性和方法,但方法不能进行任何运算、操作
接口内只能写抽象方法,不能写属性
interface 接口名{

}
接口的实现:
class 类名 implements 接口名

static 和 final

静态属性static:上一次运行的结果会保留下来,应用于这次计算
静态方法中只能直接访问静态属性,而非静态属性的访问需要创建实例对象后,通过对象名.属性访问
静态属性和静态方法可以通过类名.属性类名.方法名

最终 final 修饰的属性和方法不能进行更改。

内部类

几个类进行嵌套,就出现了外部类和内部类
内部类可以进行访问外部类的属性和方法。
外部类不能内部类的东西。

内部类的实例化:
内部类的实例化要通过外部类的对象调用:

J_Test a = new J_Test();
j_Test .J_Inner b = a.new J_Inner();

匿名内部类:是只进行一次的类。
new 类名(){

}

方法调用的值传递方式

基本数据类型值传递例程

public class J_primitive{
	public static void mb_method(int a){
		System.out.println("在 a++之前:"+a);
		a++;
		System.out.println("在a++之后:"+a);
	}
	public static void main(String args[]){
		int i =0;
		System.out.println("方法调用之前i:"+i);
		mb_method(i);
		System.out.println("在方法调用之后i:"+i);
	}
}

引用数据类型值传递例程(通过参数传递另一类的对象)

class J_Time{
	public int m_month = 1;
}
public class J_Referce{
	public static void mb_method(J_Time t)
	{
		System.out.println("在t.m_month++之前 t.m_month:"+t.m_month);
		t.m_month++;
		System.out.println("在t.m_month++之后 t.m_month:"+t.m_month);
	}

	public static void main(String args[ ]){
		J_Time a = new J_Time();
		System.out.println("方法调用之前a.m_month:"+a.m_month);
		mb_method(a);
		System.out.println("方法调用之后a.m_month:"+a.m_month);
}

你可能感兴趣的:(Java基础,java面向对象设计)