java基础10
来源:互联网 发布:淘宝客返利程序 编辑:程序博客网 时间:2024/06/05 01:13
1:内部类
(1)把类定义在一个类的内部。
(2)特点:
A:内部类可以直接使用外部类的成员,包括私有。
B:外部类要使用内部类成员,必须创建对象使用。
(3)内部类的分类:
局部内部类:定义在方法中的内部类
成员内部类:定义在类中方法外的内部类
(4)成员内部类
class Outer {
class Inner {
}
}
普通的修饰的时候:
外部类名.内部类名 变量 = 外部类对象.内部类对象;
Outer.Inner oi = new Outer().new Inner();
class Outer {
static class Inner {
}
}
用静态修饰后:
外部类名.内部类名 变量 = 外部类名.内部类对象
Outer.Inner oi = new Outer.Inner();
成员内部类:
private:为了数据的安全。
static:为了方便调用。
(5)局部内部类
A:带名字的局部内部类
class Outer {
public void method() {
class Inner {
public void show() {
System.out.println("show");
}
Inner i = new Inner();
i.show();
}
}
B:匿名内部类(掌握)
a:没有名字的内部类。其本质是一个对象。
b:前提:存在一个抽象类或者接口。
c:格式:
new 抽象类或者接口() {
重写父类方法;
};
(6)面试题:
2:包
(1)包就是永远区分相同类在不同文件夹下。其本质就是一个文件夹。
(2)包的作用:让相同类名的类可以存在。
(3)定义包:
package 包名.包名...;
(4)带包的编译和运行(理解)
A:方式一
手动式
a:javac编译代码
b:手动建立包,把class扔进去
c:java执行,带全路径
B:方式二
自动式
a:通过javac编译自动生成包
javac -d . 文件名
b:通过java运行class文件
java 包名.包名.class文件名不带扩展名
(5)不同包下的类之间的访问。
权限够大才行。
以后,我们所有定义的类都用public修饰。
(6)面试题:
在同一个java文件中,可不可以有多个类?可以。
而我们知道类是可以用public修饰的,那么,可不可以多个类都用public修饰?不可以。
并且,一般的时候,如果有main方法也存在的时候,都是public修饰带main那个类。
文件名必须和该public修饰的类名一致。
3:导包
(1)如果多次使用一个多级包的类,每次带全路径太麻烦,我们就考虑使用导包。
(2)导包的格式:
import 包名.包名...;
注意:
在同一个包下如果有多个类被使用,可以使用通配符*来导入,但是不建议。
推荐:使用谁导入谁。
(3)面试题:
package,import,class出现的位置?
package > improt > class
4:权限修饰符
(1)用于保证在不同的情况下可以使用
(2)使用如下
5:权限修饰符的组合使用及常见使用
常见的组合规则:
权限修饰符+abstract/final/static+...
我们到底怎么用:
类:
public class Demo {
}
成员变量:
变量:private String name;
常量:public static final int X = 10;
构造方法:
不让外界创建:private Demo(){}
大部分:public Demo(){}
成员方法:
不让外界用:private void show(){}
大部分:public void method()
(1)把类定义在一个类的内部。
(2)特点:
A:内部类可以直接使用外部类的成员,包括私有。
B:外部类要使用内部类成员,必须创建对象使用。
(3)内部类的分类:
局部内部类:定义在方法中的内部类
成员内部类:定义在类中方法外的内部类
(4)成员内部类
class Outer {
class Inner {
}
}
普通的修饰的时候:
外部类名.内部类名 变量 = 外部类对象.内部类对象;
Outer.Inner oi = new Outer().new Inner();
class Outer {
static class Inner {
}
}
用静态修饰后:
外部类名.内部类名 变量 = 外部类名.内部类对象
Outer.Inner oi = new Outer.Inner();
成员内部类:
private:为了数据的安全。
static:为了方便调用。
(5)局部内部类
A:带名字的局部内部类
class Outer {
public void method() {
class Inner {
public void show() {
System.out.println("show");
}
Inner i = new Inner();
i.show();
}
}
}
局部内部类:
可以访问外部类中的成员
可以访问局部成员,但它必须被final修饰
为什么?
因为局部变量使用完毕就消失了。而内部类还在内存中存在,这个时候还要使用局部变量所以为了延长它的生命周期用final修饰
B:匿名内部类(掌握)
a:没有名字的内部类。其本质是一个对象。
b:前提:存在一个抽象类或者接口。
c:格式:
new 抽象类或者接口() {
重写父类方法;
};
本质:是一个继承了类或者实现了接口的子类匿名对象。
这个里面的方法怎么用?
因为它本身就是一个对象,可以用点(.) 调用即可
如果他有多个方法,可以用父类接收,形成多态
(6)面试题:
interface Inter{void show();}class Outer{//补齐代码,完成主方法中定义的功能public static Inter method() {/*Inter i = new Inter(){public void show() {System.out.println("HelloWorld");}};return i;*/return new Inter(){public void show() {System.out.println("HelloWorld");}};}}class InnerClassTest{public static void main(String[] args){Outer.method().show(); /*分析:A: Outer.method()我们要知道在Outer中有一个静态方法method。B:Outer.method().show() 这个返回值居然还可以继续调用show方法。 那么,说明这个返回值应该是一个包含有show方法的对象。*/}}
2:包
(1)包就是永远区分相同类在不同文件夹下。其本质就是一个文件夹。
(2)包的作用:让相同类名的类可以存在。
(3)定义包:
package 包名.包名...;
(4)带包的编译和运行(理解)
A:方式一
手动式
a:javac编译代码
b:手动建立包,把class扔进去
c:java执行,带全路径
B:方式二
自动式
a:通过javac编译自动生成包
javac -d . 文件名
b:通过java运行class文件
java 包名.包名.class文件名不带扩展名
(5)不同包下的类之间的访问。
权限够大才行。
以后,我们所有定义的类都用public修饰。
(6)面试题:
在同一个java文件中,可不可以有多个类?可以。
而我们知道类是可以用public修饰的,那么,可不可以多个类都用public修饰?不可以。
并且,一般的时候,如果有main方法也存在的时候,都是public修饰带main那个类。
文件名必须和该public修饰的类名一致。
3:导包
(1)如果多次使用一个多级包的类,每次带全路径太麻烦,我们就考虑使用导包。
(2)导包的格式:
import 包名.包名...;
注意:
在同一个包下如果有多个类被使用,可以使用通配符*来导入,但是不建议。
推荐:使用谁导入谁。
(3)面试题:
package,import,class出现的位置?
package > improt > class
4:权限修饰符
(1)用于保证在不同的情况下可以使用
(2)使用如下
本类同一个包下不同包下的子类不同包下的无关类privateY默认YYprotectedYYYpublicYYYY
5:权限修饰符的组合使用及常见使用
类成员变量构造方法成员方法privateYYY默认YYYYprotectedYYYpublicYYYYabstractYYfinalYYYstaticYY
常见的组合规则:
权限修饰符+abstract/final/static+...
我们到底怎么用:
类:
public class Demo {
}
成员变量:
变量:private String name;
常量:public static final int X = 10;
构造方法:
不让外界创建:private Demo(){}
大部分:public Demo(){}
成员方法:
不让外界用:private void show(){}
大部分:public void method()
抽象方法:public abstract void function();
/*求Sn=a+aa+aaa+…+aa…a(n个a)之值,其中a是一个数字,n表示a的位数,两个数据都是从键盘录入,例如:当键盘录入的 a=2,n=5时:sn = 2 + 22 + 222 + 2222 + 22222 分析:A:从键盘录入数据。录入a和n。a表示数字的值n表示对于的a最大有几位。B:求和变量。C:分析数据组成规律 定义一个初始化值叫做a,定义每一个数据叫做an。第n项。 第一个数据:a1 = 2 =a; 第二个数据:a2 = 22 =a1*10+a; 第三个数据:a3 = 222 = a2*10+a; 第四个数据:a4 = 2222 = a3*10 + a; 第五个数据:a5 = 22222 = a4*10 + a*/import java.util.Scanner;class NumberTest {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入a的值:");int a = sc.nextInt(); //2System.out.println("请输入n的值:");int n = sc.nextInt(); //5//定义求和变量int sum = 0;//定义通项的值int an = 0;for(int x=0; x<n; x++) {an += a; //an=2,an=22,an=222,an=2222,an=22222sum += an; //sum=2,sum=24,sum=246,sum=2468,sum=24690an*=10; //an=20,an=220,an=2220,an=22220,an=222220}System.out.println(sum);//System.out.println(2 + 22 + 222 + 2222 + 22222 );}}
0 0
- java基础问题10
- java基础--10
- java基础10 集合
- java基础--笔记10
- java基础10
- Java基础-10
- Java基础(10):泛型
- java基础-----2016.4.10
- java语言基础-10
- java基础10
- java基础10
- Java基础方面1~10:
- java基础整理10--GUI
- 黑马程序员 Java基础 10
- JAVA 基础学习(10)
- java基础要点(10)-异常
- java基础第10天
- Java基础10:异常;包;
- 黑马程序员_Java基础加强实现带有构造方法的枚举
- win32 拦截API
- 七种qsort排序方法
- 程序缘 Flex AIR之旅 --第四章 搭建主工程文件
- Subsets II
- java基础10
- **Leetcode_distinct-subsequences
- 详细解说 STL 排序(Sort)(转载)
- njupt_oj:简单矩阵 :超时,求高效算法
- 用lingo12求解二次规划问题
- unity3D游戏开发四之创建基本游戏场景一
- Debian下安装Mozilla版本的Firefox等软件
- memcache研究笔记 之 多线程接入的交互
- 给程序员简历的一些建议