JAVA笔记七 (25-29包和访问权限(封装性)及接口)

二十五——二十七、包和访问权限

25)1.什么是java当中的软件包

2.为什么要使用软件包

软件包为java类提供了命名空间,使类可以重名,但是放在不同的命名空间里(本节课所讲的就是放在不同的文件夹里面)

3.如何给一个类打包

//将类放置到一个包当中,需要使用 package “包名”
//编译时需要使用 -d 参数,该参数的作用是依照包名生成相应的文件夹
//一个类的全名应该是“包名”+“.”+“类名”
package jiang;

class Test{
	public static void main(String[] args){
		System.out.println("Hello package!");
	}
}

编译:javac  -d  .  Test.java       -d的作用是根据包名生成文件夹。.表示当前文件夹。

运行:java  jiang.Test

这个类的全名是 org.marsdroid.user.Test      放在org/marsdroid/user文件夹下。


26)1.java中的访问权限

1.public:公共权限   

类是public时,类名和文件名必须一致。

在一个包的外部需要调用这个类和它的成员,它的权限必须是public;

public可以修饰类。成员变量和成员函数;没有任何限制,同一个或者不同包当中的类都可以自由访问。

package org.marsdroid;

public class Person{  //一个包不是公共的,就无法从外包中对其进行访问。
	public String name;
	public int age;
	
	public void introduce(){
		System.out.println(age);
	}
}
package com.mars;
class Test{
	public static void main(String[] args){
	org.marsdroid.Person p = new org.marsdroid.Person();  //由于Test和Person不在一个包中,需使用全名。
	
	p.age = 20;
	p.introduce();
	}
}

2.private:私有权限

 private可以修饰成员变量和成员函数;只能在本类中使用。

package org.marsdroid;

class Person{  //如果不是公共类,类名和文件名的名字可以不一致。
	private String name;
	private int age;
	
	private void introduce(){
		System.out.println(age);
	}
}

package org.marsdroid;
class Test{
	public static void main(String[] args){
	Person p = new Person(); 
	
	p.age = 20;  //age 为私有变量,不能在外包调用,不管在不在同一个包下。编译会报错。
	}
}

3.default:包(默认)级别访问权限

default (不写权限修饰符,就是default权限)可以修饰类、成员变量和成员函数;在同一个包中,可以自由访问。

4.protected:受保护权限



2.软件包的导入

package com.mars;

import org.marsdroid.Person;//Test类和要使用的类不在同一个包里的时候,可以导入。
//import org.marsdroid.*;   导入此包中所有的public类。

class Test{
	public static void main(String[] args){
	
	//org.marsdroid.Person p = new org.marsdroid.Person(); 
	Person p  = new Person();
	
	p.age = 20;
	p.introduce();
	}
}

import只引入当前包下面的类,而不引入该包下面的子包里面的类.

27)1.访问权限与继承关系

package org.mars;
//如果子类和父类不在同一个包当中,则子类无法继承到父类当中的default权限的成员变量和成员函数;
//如果成员函数和成员变量是private权限,则它的子类不管在不在同一个包里,子类都无权限使用。

public class Person{
	int age;
	String name;
	
	void eat(){
		System.out.println("eat");
	}
	
	void sleep(){
		System.out.println("sleep");
	}
}
package com.mars;

import org.mars.Person;

class Student extends Person{
	void introduce(){
		System.out.println("my name is "+ name); //无法编译通过。找不到name变量。
	}
}

2.protected权限

protected权限首先拥有和default一样的功能,但是该权限只能修饰成员变量和成员函数;

并且在跨包继承的时候,子类可以继承protected的成员变量和成员函数。


和public成员变量和成员函数的区别:public的成员,在所有的类中都可以使用;不同包中,只有子类可以访问父类中的protected权限的成员。


权限大小:public > protected > default > private

为体现封装性,在程序设计过程当中,类、成员变量和成员函数的权限应尽可能地小。

二十八、接口的基本语法(接口是面向对象的精髓所在)

1.什么是接口

定义了接口,就是定义调用对象的标准。

2.接口的语法

(一) 1)使用interface定义;  2)接口当中的方法都是抽象方法;  3)接口当中的方法都是public权限。

interface USB{
	void read();  //接口函数前面不需要加修饰词,它也是public权限。
	void write();
}

class USBphone implements USB{
	public void read(){  //复写函数时,权限修饰词也一样。
		System.out.println("usbphone read");
	}
	public void write(){
		System.out.println("usbphone write");
	}
}

(二)1)实现接口使用implements关键字;  2)一个类可以实现多个接口;  3)一个接口可以继承多个接口。

一个类实现多个接口语法:  class USBphone implements USB,WIFI{ 复写所有的接口函数 }

3)一个接口继承多个接口。

interface A{
	void funa();
}

interface B{
	void funb();
}

interface C extends A,B{
	void func();
}

二十九、接口的应用

1.为什么要使用接口?


2.工厂方法模式

思路:把生成对象的方法,封装在工厂里面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值