Java学习之路(基础三)

函数的返回

  • 基本类型:包括int, byte,float,short int,long int, double, char, string等数据类型.
  • 引用类型:class/interface数据类型,本质上是需要一个具体的子类/实现类对象,返回的是对应的子类/实现类对象.
  • 特殊使用:链式编程会将返回的对象再调用函数,且返回的数据类型任然是具体对象,故而可以一直调用.
    form:object.methodone().methodtwo().methodtree()…

包的使用

  • 是为了方便管理程序文件的需要而进行的分包管理,本质上是不同文件存放在不同的包下,常用的有:按照模块分/按照具体功能分,实际使用中是模块为主,功能为辅。

  • 导包格式:import package, class文件中位于第一行,若class文件为包下文件,则在本包头文件之下,也就说:

包文件 > 导包 > main函数。
  • DOS下,带包格式的class文件的编译/运行,需要添加-d参数。具体格式为:
 javac -d . class.java	,注意不同的包下需要先编译资源包文件,若资源包不在同一文件下需要导包处理.
  • 但是使用JDK工具会省事很多,直接点击编译运行即可。

权限修饰符-

修饰符本类同包不同包下子类不同包下无关类
privateYNULLNULLNULL
默 认YYNULLNULL
protectedYYYNULL
publicYYYY
  • 权限修饰符是对权限的描述,使用时候不能多个同时使用。

修饰符

  • 权限修饰符:如上.

private:私有.
缺省修饰符:不写出其他三种,系统内置.
protected:子类使用父类特有。
public:公有。

  • 状态修饰符:static,final.
  • 抽象修饰符:abstract.
  • 类修饰符:
    • 类:public,系统缺省,final(不允许继承),abstract.
    • 成员变量:private,系统缺省,protected,public,static,final.
    • 构造方法:public,protected,系统缺省,private.
    • 成员方法:public,protected,系统缺省,private,abstract,final,static.

内部类

  • 描述:类定义中某类的之间,某类为外部,定义的为内部类。
  • 访问规则:
    • 内部类可以直接访问外部类的所有数据,包括由private修饰的。
    • 外部想访问内部类的数据,需要创建对象。,通过对象去调用。
  • 成员内部类:
    • 与外部内成员同层级定义的内部类。
    • 可由private/static修饰,前者为了私有化,提高安全性,后者是方便调用。
    • static修饰的内部类,调用外部类的static数据,是可行的,创建对象格式:
      outClass.inClass objectName = new outClass.inClass();.
    • 不用static修饰的内部类,调用外部类的static则报错,创建对象格式:
      outClass.inClass objectName = new outClass.new inClass();.
  • 局部内部类:
    • 定义在外部类方法之中的内部类。
    • 局部内部类访问局部变量,局部变量必须加final修饰。
  • 代码举例:
/*for example*/
package JavaPackage;
class OutClass{
	/*静态成员变量*/
	private  static int num = 50;
	/*成员方法*/
	public void methodPrivate(){
		PrivateInClass in = new PrivateInClass();
		in.TestPrivateInClass();
	}
	/*成员方法*/
	public void method() {
		InClass in = new InClass();
		in.TestInClass();
	}
	/*私有内部类*/
	private class PrivateInClass{
		public void TestPrivateInClass(){
			System.out.println("测试私有的内部类.");
		}
	}
	/*公有内部类*/
	public class InClass{
		public void TestInClass(){
			System.out.println("测试的内部类.");
		}
	}
	/* 静态的内部类
	 * static不能修饰类,因为静态无法被初始化。但是可以修饰内部类...
	 * 被static修饰的内部类是无法调用非静态的外部成员变量,报错。
	*/
	public static class StaticInClass{
		public  void StaticTestInClass(){
			System.out.println("静态的成员变量,静态的内部类  " + num);
		}
		public static void StaticMethodInClass(){
			System.out.println("静态的成员变量,静态的内部类  " + num);
		}
	}	
}

public class OutIner {
	public static void main(String[] args) {
		// 内部类调用方法.
		OutClass ouPri = new OutClass();
		ouPri.methodPrivate();
		System.out.println("------------");
		// 私有化的内部类调用方法.
		OutClass.InClass out = new OutClass().new InClass();
		out.TestInClass();
		System.out.println("------------");
		/*
		 * 静态内部类.
		 * 限定的新静态类->报错。
		 */
		//OutClass.StaticInClass outStatic = new OutClass().new StaticInClass();
		//outStatic.StaticTestInClass();
		/*访问办法
		 * out.in object = new out.in();
		 *warning :The static method StaticTestInClass() from the type OutClass.StaticInClass should be accessed in a static way.
		 */
		OutClass.StaticInClass OutStaticIn = new OutClass.StaticInClass();
		OutStaticIn.StaticTestInClass();
		/*若下行运行在StaticTestInClass函数,函数修饰static则:*/
		//warning :The static method StaticTestInClass() from the type OutClass.StaticInClass should be accessed in a static way.
		OutStaticIn.StaticTestInClass();
		/*TestExpretion method*/
		OutClass.StaticInClass.StaticMethodInClass();
		
	}
}

  • 匿名内部类
  • 编程中对内部类使用的简化形式,创建一次,使用一次,保证数据的最快回收.
  • 前提:需要重写的类和接口.
    Form:
new classname/interface(){
	重写方法;
}
  • 两种实现方式
/*for example*/
interface Function{
	public abstract void TestCc();
}
	...main body...

	/*method First,只可以使用一次函数.*/
	new Function(){
		pubic void TestCc(){
			System.out.println("this is the first TestCc");
		}.TestCc();
	}

	/*method Second*/
	Function fc = new Function(){
		pubic void TestCc(){
			System.out.println("this is the second TestCc");
		}
		fc.Testcc();	
	}
  • 匿名内部类–实际运用
/* for example*/
inter Function{
	public abstract void TestCc();
}
class FuntionTest{
	public void Test(Function fc){
		fc.TestCc();
	}
}
class JutiClass implements Function{
	public void TestCc(){
		System.out.println("具体化后的测试.");
	}
}
class MainBody{
	public static void main(string[] args){
	//调用Test去显示“具体化后的测试.”
	FunctionTest FT = new FunctionTest();
	Function JL = new JutiClass();
	FT.Test(JL);
	}
	/*实现方式2*/
	FunctionTest FT = new FunctionTest();
	FT.Test(new Funtion(){
		public void TestCc(){
			System.out.println("具体化后的测试.");
		}
	});	
}
  • 还原Coding
	/*需求目标,补全代码,控制台输出 "hello world"*/
	interface inter{
		public abstract void show();
	}
	class Outer{
		//补全部分
		//补全部分如下:
		public static inter method(){
			return new inter(){
				public void show(){
					System.out.println("hello world");
				}
			};
		}
	}
	class mainbody{
		public static void main(String[] args){
			Outer.method().show();
		}
	}
	```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值